バージョン選択

フォーラム

メニュー

オンライン状況

71 人のユーザが現在オンラインです。 (55 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 70
Akamaru もっと...

サイト内検索

機能要望 > その他 > もっとパフォーマンスのよいEC-CUBE

その他

新規スレッドを追加する

| 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mojaxp
投稿日時: 2008/12/16 3:59
対応状況: −−−
常連
登録日: 2007/11/28
居住地: 岩手県盛岡市
投稿: 57
Re: もっとパフォーマンスのよいEC-CUBE
横槍失礼。
>・クラスオブジェクトを生成し過ぎているのでは?
>・DB参照しすぎでは?

多分、fourさん同様、私(C/400)含め、他の開発言語でアプリを開発してきた皆さんはわかってることだと思うよ。
だから自分で少しずつ手直しして使っているのが現状だと思う。
DBもしかりだ。
私事でなんだが、遙か昔、AS/400で始めてアプリ作った時こういうDB設計してしこたま怒られたことがあった(笑
sakurai07
投稿日時: 2008/12/18 14:45
対応状況: −−−
長老
登録日: 2008/2/29
居住地:
投稿: 179
Re: もっとパフォーマンスのよいEC-CUBE
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=2262&forum=3&post_id=8779#forumpost8779
をやってみたのですが、

商品登録時にカテゴリ登録を下記2つに登録した場合に起きているるようです。レスポンスは良くなりました。
・新作
・トップス

↓カテゴリの階層です。
トップス > ワンピース・チュニック > 七分袖
トップス > ワンピース・チュニック > チュニック
一覧ページで新作カテゴリにのみ表示されていてトップスのカテゴリには表示されていません。

カテゴリーブロックには「商品名(商品数)」は表示されています。
kurushimaq
投稿日時: 2008/12/18 18:23
対応状況: −−−
新米
登録日: 2008/12/18
居住地:
投稿: 1
Re: もっとパフォーマンスのよいEC-CUBE
僕もhttp://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=2262&forum=3&post_id=8779#forumpost8779を試してみましたが、カテゴリ表記で不具合がありました。

元のSQLは、

   (SELECT T1.product_id,
           product_code_min,
           product_code_max,
           price01_min,
           price01_max,
           price02_min,
           price02_max,
           stock_min,
           stock_max,
           stock_unlimited_min,
           stock_unlimited_max,
           del_flg,
           status,
           name,
           comment1,
           comment2,
           comment3,
           main_list_comment,
           main_image,
           main_list_image,
           product_flag,
           deliv_date_id,
           sale_limit,
           point_rate,
           sale_unlimited,
           create_date,
           deliv_fee,
           rank
           ,(SELECT rank AS category_rank
               FROM dtb_category AS T4
              WHERE T1.category_id = T4.category_id) as category_rank
           ,(SELECT category_id AS sub_category_id 
               FROM dtb_category T4 
              WHERE T1.category_id = T4.category_id) as category_id
      FROM (SELECT T0.product_id,
                   T0.del_flg,
                   T0.status,
                   T0.name,
                   T0.comment1,
                   T0.comment2,
                   T0.comment3,
                   T0.main_list_comment,
                   T0.main_image,
                   T0.main_list_image,
                   T0.product_flag,
                   T0.deliv_date_id,
                   T0.sale_limit,
                   T0.point_rate,
                   T0.sale_unlimited,
                   T0.create_date,
                   T0.deliv_fee,
                   T00.category_id,
                   T00.rank
              FROM dtb_products AS T0
         LEFT JOIN dtb_product_categories AS T00
             USING (product_id)) AS T1 
RIGHT JOIN (SELECT product_id as product_id_sub,
                   MIN(product_code) AS product_code_min,
                   MAX(product_code) AS product_code_max,
                   MIN(price01) AS price01_min,
                   MAX(price01) AS price01_max,
                   MIN(price02) AS price02_min,
                   MAX(price02) AS price02_max,
                   MIN(stock) AS stock_min,
                   MAX(stock) AS stock_max,
                   MIN(stock_unlimited) AS stock_unlimited_min,
                   MAX(stock_unlimited) AS stock_unlimited_max
              FROM dtb_products_class GROUP BY product_id) AS T2 
                ON T1.product_id = T2.product_id_sub

でしたが、これを

select
  p.product_id,
  p.del_flg,
  p.status,
  p.name,
  p.comment1,
  p.comment2,
  p.comment3,
  p.main_list_comment,
  p.main_image,
  p.main_list_image,
  p.product_flag,
  p.deliv_date_id,
  p.sale_limit,
  p.point_rate,
  p.sale_unlimited,
  p.create_date,
  p.deliv_fee,
  pca.category_id,
  pclg.product_code_min,
  pclg.product_code_max,
  pclg.price01_min,
  pclg.price01_max,
  pclg.price02_min,
  pclg.price02_max,
  pclg.stock_min,
  pclg.stock_max,
  pclg.stock_unlimited_min,
  pclg.stock_unlimited_max
from dtb_products as p
left outer join dtb_product_categories as pca on pca.product_id = p.product_id
left outer join dtb_category as c on c.category_id = pca.category_id
right outer join (
  select
    pcl.product_id,
    min(pcl.product_code) as product_code_min,
    max(pcl.product_code) as product_code_max,
    min(pcl.price01) as price01_min,
    max(pcl.price01) as price01_max,
    min(pcl.price02) as price02_min,
    max(pcl.price02) as price02_max,
    min(pcl.stock) as stock_min,
    max(pcl.stock) as stock_max,
    min(pcl.stock_unlimited) as stock_unlimited_min,
    max(pcl.stock_unlimited) as stock_unlimited_max
  from dtb_products_class as pcl
  group by pcl.product_id
) as pclg on pclg.product_id = p.product_id

としてみました。元のはselect中でサブクエリを使っているので、
行ごとに検索されるのと、left joinにしました。
topo
投稿日時: 2008/12/20 18:26
対応状況: −−−
常連
登録日: 2008/6/11
居住地: 岡山
投稿: 64
Re: もっとパフォーマンスのよいEC-CUBE
>four様
元Oracle使いとしてはSQLレベルのチューニングで
なんとかできると信じています^^;
構造的な部分は・・・わかる方お願いしますw

>mojaxp様
横槍といわずいっぱいご意見聞かせてくださいませm(_ _)m
PHPの開発案件をがっつりやった経験が薄いのでクラスオブジェクトの方は
判断が付きませんがDBの構造とかはちょっと・・・って気がします^^;
xunfeng
投稿日時: 2009/1/30 16:06
対応状況: −−−
新米
登録日: 2008/12/4
居住地: Fukui
投稿: 5
Re: もっとパフォーマンスのよいEC-CUBE
初めて投稿いたします。
ちょっとエラーの出る条件までは調べていないのですが、
kurushimaqさんが書きこんでいただいたコードですと、
一部のデータを編集する際にシステムエラー。
複製でシステムエラー。
確認で別のカテゴリーが表示されてしまうようです。
表示速度は速くなっているのですが。。。
書き逃げみたいで申し訳ありませんが、ご報告まで。
結局、PostgreSQL使うというのが最終手段なんですかね?
seasoft
投稿日時: 2009/1/30 21:58
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: もっとパフォーマンスのよいEC-CUBE
> 結局、PostgreSQL使うというのが最終手段なんですかね?

私見ですが、最終というより基本かと。

開発メンバの多くは PostgreSQL 環境が中心ですし。
私自身も、MySQL での動作確認は行わないまま、改訂を投入することがほとんどだし・・・ゴメンナサイ


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

xunfeng
投稿日時: 2009/2/1 15:57
対応状況: −−−
新米
登録日: 2008/12/4
居住地: Fukui
投稿: 5
Re: もっとパフォーマンスのよいEC-CUBE
基本ですか
確かに今後のことも考えるとその方がよさそうですね。
pgSQLへの移行を検討してみます。
ご返信ありがとうございます。
xunfeng
投稿日時: 2009/2/14 20:37
対応状況: −−−
新米
登録日: 2008/12/4
居住地: Fukui
投稿: 5
Re: もっとパフォーマンスのよいEC-CUBE
自己レスです。
EC-CUBE 2.3.3
PHP 5.1.6
MySql 5.0.4 の環境にて
商品点数2300。すべての商品が2つのカテゴリに属し。
規格は利用していない。関連商品ありでの登録。
上記で商品ページやオススメ商品を開くのに40秒程度かかっておりましたが、

EC-CUBE 2.3.3
PHP 5.1.6
Postgresql 8.3.6 の環境に変更後 2秒以内に表示が完了するようになりました。こんなに違うとは。

MysqlでSqlやphpのチューニングに頑張っていた時間はいったい何だったんだろうという結末です。

Mysql > Postgresql への移行は手間はかかりましたが、難しい知識も必要としませんでした。(phpMyadminとphpPgAdminを使用)

ホントseasoft様の言われるとおり。EC-CUBEはPostgresqlが基本なんだなと。改めて感じました。
目からウロコです。
x41
投稿日時: 2009/2/14 22:36
対応状況: −−−
仙人
登録日: 2007/11/23
居住地:
投稿: 308
Re: もっとパフォーマンスのよいEC-CUBE
以前、わたしもmysql環境でチューニング等を行っておりましたがpostgreに変更した時のパフォーマンスには驚きました。

EC-CUBEで商品点数が多い場合はpostgreがおすすめですね。。
seasoft
投稿日時: 2009/2/14 22:50
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: もっとパフォーマンスのよいEC-CUBE
正式版の MySQL 用のSQL文は酷い状態ですからね・・・
意味不明な無駄な計算を大量にして、ハードウェア資源を無駄に消費してます。とても自虐的ですよ^^;
(概要は、このスレッドの過去ログにあったと思います。)


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

« 1 2 3 (4) 5 6 »
| 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,899名です
総投稿数は110,002件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.