Windows/iPhoneアプリ、ゲーム用フリー音源、ヒーリングミュージックのMeteoric Stream


日本語 | English
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> EC-Cube3 -> 【ECCube3】EC-Cubeでキーワード検索を高速化する方法

【ECCube3】EC-Cubeでキーワード検索を高速化する方法

EC-Cube3で、商品点数が15万件くらいあると、
キーワード検索が死ぬほど遅くて使い物にならなかったので、
高速化のメモです。

高速化に、一番効果があったもの

最初からそうしておけよ・・・って感じがしなくもないですが、 商品一覧ページのGROUP BY句に、無駄なカラムがものすごく多く並んでいるせいで、死ぬほど重いSQL文が出来上がってしまっています。 これは、以下の方法で修正できます。
/src/Eccube/Repository/ProductRepository.php: $qb->groupBy('p'); になっている箇所を探し出して、 $qb->groupBy('p.id'); と修正すればおk。
これで、120秒かかっていたキーワード検索が、たったの2秒になりましたwww ・・・いや、今までの苦労はなんだったんでしょうね。

インデックスを見直す

EC-Cube3系は、ある程度、データベースにインデックスが貼られていますが、del_flgなど、一部インデックスが貼られていないカラムがあります。 微々たる高速化ですが、インデックスを貼ることが出来るカラムを探して、修正しておけば、少しは役に立つかも知れません。

MySQLのクエリキャッシュを利用する

まだ、MySQLのチューニングを行なっていない場合は、 クエリキャッシュを利用する事で、やや高速化に役立てる事が出来ます。 「vi /etc/my.cnf」などでMySQLの設定ファイルを開いて、 query_cache_limit=1M query_cache_size=32M のような形で記述し、保存して、MySQLを再起動すれば設定できます。 ただし、あくまでもキャッシュですので、 キャッシュが効いていない時は効果がありません。

実際に実行されているSQL文を確認する方法

EC-Cubeの場合、どのようなSQL文が実際に吐き出されているかの確認に、困る事があります。 筆者は、以下の方法で、確認しました。 まず、「vi /etc/my.cnf」などでMySQLの設定ファイルを開き、 general_log=1 general_log_file="/var/log/mysql/sql.log" log_output=FILE のような形で、ログファイルを吐き出すように設定を行います。 この時、sql.logのパーミッションに注意します。 mysqldから、sql.logにファイル書き込みが出来る必要がありますので、chmodなどで、ファイル書き込み権限を与えておきます。 MySQLを再起動すると、設定が有効になり、実行されたSQL文がログに出力されて行きます。 ただし、このままだと、ログファイルが膨大になってしまう可能性があるため、不要であれば、「#」などでコメントアウトしておきましょう。

EC-Cube3系のキャッシュ機能を利用する

※以下の項目は、バグが起きるため、結局利用しなくなりました。 これって結局、ちゃんとキャッシュが働いているのか微妙なところですが、せっかくなので設定しておきます。 「/app/config/eccube/doctrine_cache.yml」と、「/app/config/eccube/http_cache.yml」を新規作成して、それぞれに以下のような形で記述します。
/app/config/eccube/doctrine_cache.yml: doctrine_cache: metadata_cache: driver: array path: host: port: password: query_cache: driver: array path: host: port: password: result_cache: driver: array path: host: port: password: lifetime: 3600 clear_cache: true hydration_cache: driver: array path: host: port: password:
/app/config/eccube/http_cache.yml: http_cache: enabled: true age: 10 # フロントでキャッシュを適用させる画面のrouteを設定 route: - homepage - product_list - block_category - block_news - block_search_product - help_about - help_guide - help_privacy - help_tradelaw - help_agreement

この記事の最終更新日:2018/05/11
最初に記事を書いた日:2018/05/09

この記事をシェアする

このエントリーをはてなブックマークに追加

関連記事

関連サービス

資料室のトップに戻る
Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> EC-Cube3 -> 【ECCube3】EC-Cubeでキーワード検索を高速化する方法
▲このページのTopへ