- 2007-10-01 (月) 15:32
- 技術
EC CUBEでは同じ商品の色違いやサイズ違いなどが「規格」という概念で扱いやすくなってるのですが、(「規格」が無いと同じ商品なのに色違いなどで別々に商品登録するハメになったり、買う側も閲覧が不便になるなどということが起こりえます)
商品数や規格数が増えてくると規格編集ページの表示にものすごく時間がかかるという話です。
最近、会社の人がEC CUBEで構築したショッピングサイトに一生懸命商品を登録していたのですが、規格編集のページの表示ができなくなったという報告を受けて調査してみました。
すると商品数800以上、規格数1000以上の状態で、規格編集のページの表示に数分掛かるようになっていました。
サーバにログインしてtopコマンドを打ってみると、mysqlの負荷が高いことが判明。
とりあえず、いくつかの商品関連のテーブルのキーになる可能性のある項目にインデックス張ってみると(EC CUBEの初期状態ではさほどDBのチューニングはされていない感じです)、処理時間が3分の1程度になりました。
まぁ、数分の3分の1 = 数十秒なのでまだまだ全然ダメです。
ということで、DBのチューニングだけでは解決しないっぽいので、PHPのソースの中に埋め込まれているSQL文を見てボトルネックを探すことに。
するとありました。いかにも遅そうなSQL文が。
規格組み合わせ一覧の取得をするfunctionの中に、ビューとサブクエリとJOINを同時に含むクエリがありました。
色々と高速化する方法は思い浮かぶのですが、面倒なのでとりあえずググってみたら、冒頭のページを発見!
とりあえずそのままコピペしたら問題なく動作し劇的に早くなりました。(1秒以内)
バージョンは1.3.4です。
商品数や規格数が増えてくると規格編集ページの表示にものすごく時間がかかるという話です。
最近、会社の人がEC CUBEで構築したショッピングサイトに一生懸命商品を登録していたのですが、規格編集のページの表示ができなくなったという報告を受けて調査してみました。
すると商品数800以上、規格数1000以上の状態で、規格編集のページの表示に数分掛かるようになっていました。
サーバにログインしてtopコマンドを打ってみると、mysqlの負荷が高いことが判明。
とりあえず、いくつかの商品関連のテーブルのキーになる可能性のある項目にインデックス張ってみると(EC CUBEの初期状態ではさほどDBのチューニングはされていない感じです)、処理時間が3分の1程度になりました。
まぁ、数分の3分の1 = 数十秒なのでまだまだ全然ダメです。
ということで、DBのチューニングだけでは解決しないっぽいので、PHPのソースの中に埋め込まれているSQL文を見てボトルネックを探すことに。
するとありました。いかにも遅そうなSQL文が。
規格組み合わせ一覧の取得をするfunctionの中に、ビューとサブクエリとJOINを同時に含むクエリがありました。
色々と高速化する方法は思い浮かぶのですが、面倒なのでとりあえずググってみたら、冒頭のページを発見!
とりあえずそのままコピペしたら問題なく動作し劇的に早くなりました。(1秒以内)
バージョンは1.3.4です。
コメント:0
トラックバック:0
- トラックバック用URL
- http://peta.okechan.net/blog/archives/193/trackback
- リンク元
- EC CUBE高速化 - 規格編集画面 ← 日曜研究室 [技術的な日常:あなたの幸せはここにある]