オプションが増えると重い

困った時はこちらで質問してください。回答を担当する人は特に決まっていませんので、分かる方は回答をお願いします。
アバター
GOMA

オプションが増えると重い

投稿記事by GOMA » 2007/6/27 11:20

いつも参考にさせていただいています。超初心者の者です。

現在、オプション名の数が約20個。オプション値の数が約70個あります。
商品画面の表示に約30秒ほどかかってしまい困っています。

オプションを除いて実験したら、普通に画面表示されますのでオプションの数が問題なんだと思いますが、何か対処方法はあるでしょうか?

サーバーが違えば変わるでしょか?ちなみに現在はチカッパを使用しています。

よろしくお願いします。
アバター
あおさんとお呼び縲怩需
記事: 260
登録日時: 2006/2/01 23:09
お住まい: tokyo

Re: オプションが増えると重い

投稿記事by あおさんとお呼び縲怩需 » 2007/6/27 15:54

GOMA さんが書きました:
サーバーが違えば変わるでしょか?ちなみに現在はチカッパを使用しています。

よろしくお願いします。


うちは、海外サーバーから国内のサーバーに変えたら
けっこう早くなりました。
もちろんサーバースペックに依存すると思いますけれど。
あとはDBのチューニングができれば重点的に
そこだけやるとか・・
・・・・・署名・・・・・
バカだからバカはスキ。でも何も試さないヤツはキライ。
アバター
kimono
記事: 1995
登録日時: 2005/9/27 13:30
お住まい: 大阪府大阪市天王寺区上本町
連絡を取る:

投稿記事by kimono » 2007/6/27 19:05

こんにちわ。kimonoです :)
オプション名の数が127個。オプション値の数が1163個あります。
昔はかなり重かったです。ここにも記載し、皆様のお蔭でその際は助かりました。
今は、サーバーを構築し、チューニングし、レンタルサーバーもやっております。
zencartなどCMS用にチューニングしています。
・・・乗っかって営業してみたりw
アバター
GOMA

投稿記事by GOMA » 2007/6/29 10:41

あおさん、kimonoさんご回答ありがとうございます。

お試し期間を利用して別のサーバーで試してみたところ、ストレスを感じないレベルに
改善されました。
サーバーの変更の予定で考えています。

ありがとうございました。 :D
アバター
kino
記事: 893
登録日時: 2005/5/15 19:39
お住まい: 京都
連絡を取る:

投稿記事by kino » 2007/6/30 16:05

木下です。

V1.2系列であればDBに適切なインデックスが設定されていない為
オプションなどが増えると遅くなります。
V1.3では其の点は解消されていたとおもいます。

昔も投稿したことがあるのですが

コード: 全て選択

ALTER TABLE products ADD KEY `status-id` (products_status,
products_id);
ALTER TABLE products ADD KEY products_type ( products_type );
ALTER TABLE products ADD KEY idx_products_manufacturers_id_key(
manufacturers_id );
ALTER TABLE products ADD KEY idx_products_status_id (products_status,
products_id);
ALTER TABLE products ADD KEY idx_products_date_available_key(
products_date_available );
ALTER TABLE products ADD KEY idx_products_ordered_key(
products_ordered );
ALTER TABLE products ADD KEY idx_products_type_key( products_type );
ALTER TABLE products ADD KEY idx_products_sort_order_key
(products_sort_order);
ALTER TABLE products ADD KEY idx_products_model_key (products_model);
ALTER TABLE products_description ADD FULLTEXT fidx_products_name
(products_name);
ALTER TABLE products_description ADD KEY products_name (
products_name );
ALTER TABLE reviews ADD KEY idx_products_id (products_id);
ALTER TABLE products ADD FULLTEXT fidx_products_model (products_model);

ALTER TABLE specials ADD INDEX ( `status` ) ;
ALTER TABLE specials ADD INDEX ( `products_id` ) ;
ALTER TABLE specials ADD INDEX ( `specials_date_available` ) ;
ALTER TABLE specials ADD INDEX ( `date_status_change` ) ;
ALTER TABLE specials ADD INDEX ( `specials_date_added` ) ;
ALTER TABLE specials ADD INDEX ( `specials_last_modified` ) ;
ALTER TABLE specials ADD INDEX ( `expires_date` ) ;

ALTER TABLE products_options ADD INDEX (
`products_options_sort_order`);
ALTER TABLE products_attributes ADD INDEX (`products_id` ) ;
ALTER TABLE products_attributes ADD INDEX (`options_id` ) ;
ALTER TABLE products_attributes ADD INDEX (`options_values_id` ) ;
ALTER TABLE products_attributes ADD INDEX
(`products_options_sort_order` ) ;

ALTER TABLE products_description ADD INDEX ( `products_viewed` )


ALTER TABLE configuration ADD INDEX ( `configuration_group_id` ) ;
ALTER TABLE configuration ADD INDEX ( `configuration_key` ) ;
ALTER TABLE configuration ADD INDEX ( `sort_order` ) ;
ALTER TABLE configuration ADD FULLTEXT `configuration_value`
(`configuration_value`) ;

ALTER TABLE configuration_group ADD INDEX ( `sort_order` ) ;
ALTER TABLE configuration_group ADD INDEX ( `visible` ) ;

ALTER TABLE zones_to_geo_zones ADD INDEX ( `zone_country_id` ) ;
ALTER TABLE zones_to_geo_zones ADD INDEX ( `zone_id` ) ;
ALTER TABLE zones_to_geo_zones ADD INDEX ( `geo_zone_id` ) ;
ALTER TABLE zones_to_geo_zones ADD INDEX ( `date_added` ) ;

ALTER TABLE reviews ADD INDEX ( `status` ) ;
ALTER TABLE languages ADD INDEX ( `sort_order` ) ;
ALTER TABLE languages ADD INDEX ( `code` ) ;

ALTER TABLE layout_boxes ADD INDEX ( `layout_box_location` ) ;
ALTER TABLE layout_boxes ADD INDEX ( `layout_template` ) ;

ALTER TABLE featured ADD INDEX ( `products_id` ) ;
ALTER TABLE featured ADD INDEX ( `status` ) ;

ALTER TABLE categories ADD INDEX ( `categories_status` ) ;
ALTER TABLE product_types ADD INDEX ( `type_master_type` ) ;

ALTER TABLE customers_info ADD INDEX (
`global_product_notifications` ) ;
ALTER TABLE layout_boxes ADD INDEX ( `layout_box_name` ) ;

を admin/sqlpatch.php で実行すれば可也早くなるはずです。

それ以外には、Apacheの設定や MySQLの設定等サーバーの
管理権限が無いと弄れないパラメータも在りますが、
設定すると劇的に速度が向上するパラメータもあります。

これまで 30秒掛かっていたShopを別サーバーで構築するだけで
ストレスが感じないレベルに改善されたということであればどちらかというと
これらの設定が変わったのかもしれませんね。

後は、APCやZendOptimaizer等のPHPアクセラレータを導入するとか
WebサーバとDBサーバーを分離したりシステムのログを別サーバーにとるとか
色々な高速化手法があります。

商品点数が増えてどうしてもチューニングが必要になった場合等は
有償でのボトルネック調査やチューニングも請け負っているので
ご相談ください。

まあ、そうやって発見したボトルネックやチューニング内容は
投稿したりもしているので上手くすれば検索で見つかるかもしれませんが。(^^
-----
木下 敏夫
http://www.tktools.jp/

大阪府産業デザインセンターデザイン専門員 ( http://bmb.oidc.jp/index.php?topic=-m-D14 )
奥様ショップ 店長 ( http://okusama-shop.com/ )
電脳ドロップシッピング 店長 ( http://d-064.d-shipping.net/ )
アバター
中邑

投稿記事by 中邑 » 2007/8/03 18:18

はじめまして。
私のサイトも非常に重く、困っております。
オプション名は4つ、商品オプションは84、オプションを追加した際の番号は11726です。

kino様の書かれていましたコードをadmin/sqlpatch.php で実行しましたが、

1061 Duplicate key name 'status-id'

と、表示されました。
これはエラー表示なのでしょうか?
翻訳しましたが、理解できませんでした。
私どもの商品オプション値ですとzencartでは限界なのでしょうか・・・
アバター
kino
記事: 893
登録日時: 2005/5/15 19:39
お住まい: 京都
連絡を取る:

投稿記事by kino » 2007/8/05 15:15

木下です。

元になっているバージョンによっては
投稿したコードのSQLでは既に設定されているインデックスと重複するものも
有るかもしれないので
エラーが発生したらそれ以降の行を再実行するなどして
見ると良いかもしれません。

これまでの経験から
テーブルにインデックスを追加するだけでも可也効果がありますが
サイトのレスポンスアップに一番効果があるのは
apacheのチューニングでしょうか。
その後、それに合わせたMySQLのチューニングを行わないと
訪問者が増えるとDBが追従できなくて待ち行列が発生し
レスポンスが落ちるということもあるので
総合的に行う必要はあります。
-----
木下 敏夫
http://www.tktools.jp/

大阪府産業デザインセンターデザイン専門員 ( http://bmb.oidc.jp/index.php?topic=-m-D14 )
奥様ショップ 店長 ( http://okusama-shop.com/ )
電脳ドロップシッピング 店長 ( http://d-064.d-shipping.net/ )

“Zen Cart 質問コーナー” へ戻る