« ダービーで感じたこと | トップページ | EC-CUBEのカスタマイズ »

EC-CUBEのメルマガ配信でMySQLが遅い

EC-CUBEでDBとしてMySQL5.0系を使ってると、「ある商品を購入した会員に対してのメルマガ配信」を行おうとすると、レスポンスが返ってこなくなり、何度もトライするうちに負荷増大!

挙句に、EC-CUBE自体の動作までおかしくなるという現象が発生。

上記現象は、調査してわかったことなんで、当初は商品の購入ができなくなっている!という事態が発覚したところからスタート。

通販ショップからして、商品の購入ができないなんて・・・すごいトラブル。

最初はひとまず、障害の復旧が優先なのでhttpdやmysqldを取り急ぎ再起動して解決。

しかし、原因を究明しようにもmysql.logには何も出ておらず・・・

slow.logの取得などをしつつ、一度、放置。
お客様にどんな操作をしていたかもヒヤリング。

で、結果、上記の操作をしていたことが原因と発覚。

slow.logにもリアルにそのログが残っていて、mysqlクライアント画面でやってもレスポンスは返ってこない。
色々とググっていると、mysqlはDEPENDENT SUBQUERYが異常に遅いということ。
確かに、そのSQLをEXPLAINすると、「DEPENDENT SUBQUERY」が3行も表示される。
typeもALLだから全件なめている・・・それは遅いわ!

ということで、しかるべき場所にINDEXを貼ろうということで、貼りました。

> alter table dtb_order add index (customer_id);
> alter table dtb_order_detail add index (order_id);
一応、この2つだけに貼ってみて、レスポンスも問題なく返ってくるようになりました。

しかし、この問題、EC−CUBE周りでぐぐっても結局出てこなかったんだよな・・・どうして?って感じ。

« ダービーで感じたこと | トップページ | EC-CUBEのカスタマイズ »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/37957/54905551

この記事へのトラックバック一覧です: EC-CUBEのメルマガ配信でMySQLが遅い:

« ダービーで感じたこと | トップページ | EC-CUBEのカスタマイズ »