Zen Cartが激重で困った!
DBチューニングなんて出来ない!
そんな方に朗報です。

Zen CartにはDBのクエリをキャッシュする仕組みがついています。
この海外モジュールも同様にSQLクエリをキャッシュするモジュールです。
違うところはデフォルトの機能がファイルかデータベースにキャッシュするのに対して、このモジュールはメモリにキャッシュする点です。

Query Cache

=説明文抜粋=
Query Cache is in memory cache which can reduce number of queries sent to database by over 50%. Thus, Query Cache might greatly reduce query execution time and response time of most Zen Cart stores.
It's easy to install (no sql patches, just copy contents of unzipped directory to Your store directory) and works with ALL 1.3.x versions of Zen Cart.

I tested this contribution on Zen Cart demo store and it squeezed number of queries from 900 to 450.
To see charts comparing stores with and without Query Cache or to watch screencast showing how to install this contribution please go to: http://www.data-diggers.com

冒頭に書いたとおり、クエリキャッシュをメモリ上におくことで発行するクエリ数を50%以上低減できるとのこと。
Zen Cartの対応バージョンも1.3.x系全てだそうです。
期待できそうです。

解凍するとこんな感じの構成になっています。
Zen Cartのバージョンごとにパッケージされていますので自分の環境のものをアップロードするだけでインストールは完了します。
ただし、includes/classes/db/mysql/query_factory.phpを上書きするので念のためにバックアップを取っておいたほうが良いでしょう。(このファイルをカスタマイズすることはまずないと思うのでバックアップしなくても容易に元ファイルは入手できますが。)

ファイル/フォルダ名
───────────────────────────────────────
QueryCache
├ Zen-Cart 1.3.0
│ └ includes
│    ├ auto_loaders
│    │ └ config.query_cache.php
│    └ classes
│       ├ db
│       │ └ mysql
│       │    └ query_factory.php
│       └ query_cache.php
├ Zen-Cart 1.3.5
│ └ includes
│    ├ auto_loaders
│    │ └ config.query_cache.php
│    └ classes
│       ├ db
│       │ └ mysql
│       │    └ query_factory.php
│       └ query_cache.php
├ Zen-Cart 1.3.6
│ └ includes
│    ├ auto_loaders
│    │ └ config.query_cache.php
│    └ classes
│       ├ db
│       │ └ mysql
│       │    └ query_factory.php
│       └ query_cache.php
├ Zen-Cart 1.3.7
│ └ includes
│    ├ auto_loaders
│    │ └ config.query_cache.php
│    └ classes
│       ├ db
│       │ └ mysql
│       │    └ query_factory.php
│       └ query_cache.php
├ Zen-Cart 1.3.8a
│ └ includes
│    ├ auto_loaders
│    │ └ config.query_cache.php
│    └ classes
│       ├ db
│       │ └ mysql
│       │    └ query_factory.php
│       └ query_cache.php
└ INSTALL.txt
───────────────────────────────────────
30 個のフォルダと 16 個 89 KByte のファイルがあります。


1.3.8aに入れてみる前に現状の発行クエリ数とQuery Time、ついでにパースタイムを数回計っておきます。
テスト環境では
発行クエリ数:450くらい(いろんなモジュールが入っているので多いかな。)
平均クエリタイム:1.1
平均パースタイム:2.3
でした。
あれこれ試している1.3.8aなので素の物に比べてはるかに重いですねぇ。

これがこうなりました。
発行クエリ数:220
平均クエリタイム:0.9
平均パースタイム:1.9
でした。

20%くらいパフォーマンスが上がった?
ちょっと出来すぎな気もするけどこの数値はGZIPを無効にしてあります。
有効にするとこうなります。
発行クエリ数:220
平均クエリタイム:0.75
平均パースタイム:1.6

これは以下の環境での計測なので万事この通りになるということではありませんが個人的には「有効」なものだと感じました。

サーバー環境
win XP
Apache2
MySQL5
PHP5

計測方法
トップページをリロード。それぞれ5回計測しその平均をとった。


//////////////////////////////////////////////////////////////////////////
Zen Cartでのサイト構築、モジュール開発、カスタマイズなどお気軽にご相談ください。
オフィスあんどぷらす http://www.andplus.net/
えぇ商いどっと混む http://www.a-akinai.com/

人気ブログランキング 人気blogランキング にほんブログ村 企業ブログ 情報通信業へ
//////////////////////////////////////////////////////////////////////////