Opened 14 years ago
Closed 14 years ago
#1892 closed defect (fixed)
h_homeのコミュニティ書き込み一覧のSQLが重い
Reported by: | kunitada | Owned by: | katafuchi |
---|---|---|---|
Priority: | critical | Milestone: | OpenPNE2.10.4 |
Component: | 指定しない | Version: | 2.8.x & 2.10.x & 2.11.x |
Keywords: | OpenPNE2.8.9 OpenPNE2.11.5 | Cc: |
Description (last modified by )
■現象
参加コミュニティ書き込み一覧のSQLが重い。
SELECT cct.c_commu_topic_id, cct.c_commu_id, MAX(cctc.r_datetime) as r_datetime, cct.c_member_id FROM c_commu_topic as cct, c_commu_topic_comment as cctc /*! USE INDEX (r_datetime_c_commu_id) */ WHERE cct.c_commu_id IN (N, N, ......) AND cctc.c_commu_topic_id = cct.c_commu_topic_id GROUP BY cctc.c_commu_topic_id ORDER BY r_datetime DESC LIMIT N, N
■原因
【問題その1】本SQLを使用している関数 function db_commu_c_commu_topic_comment_list4c_member_idではfunction cacheが使われていない
【問題その2】同上関数でindexが指定してあるが実際にexplainしてみるとindexを使用できていない(http://dev.mysql.com/doc/refman/4.1/ja/order-by-optimisation.html Group by とOrder byの式が異なる場合ORDER BYの解決にindexを使用できないため全件検索を行なっている)=>正規化を崩して対策する必要があると思われる
■修正方針
db_commu_c_commu_topic_comment_list4c_member_id にfunction cacheを入れる。
pne_cache_dropする場所もうまくやる。
■修正内容
修正リビジョンは以下(まだ)
- trunk -
■関連情報
Change History (15)
comment:1 Changed 14 years ago by
Description: | modified (diff) |
---|
comment:2 Changed 14 years ago by
Status: | new → assigned |
---|
comment:3 Changed 14 years ago by
Keywords: | 確認中 added |
---|
comment:6 Changed 14 years ago by
トピック書き込み時に自分の分のキャッシュを破棄するパッチになります
Index: db/commu.php =================================================================== --- db/commu.php (リビジョン 5234) +++ db/commu.php (作業コピー) @@ -2419,6 +2419,9 @@ */ function db_commu_insert_c_commu_topic_comment($c_commu_id, $c_commu_topic_id, $c_member_id, $body) { + //function cache削除 + cache_drop_c_commu_list4c_member_id($c_member_id); + $number = _do_c_commu_topic_comment_number4c_commu_topic_id($c_commu_topic_id); $data = array( @@ -2581,6 +2584,7 @@ { //function cacheの削除 cache_drop_c_commu_topic($topic['c_commu_id']); + cache_drop_c_commu_list4c_member_id($topic['c_member_id']); $data = array( 'c_commu_id' => intval($topic['c_commu_id']), @@ -2619,6 +2623,9 @@ function db_commu_insert_c_commu_topic_comment_3($comment) { + //function cache削除 + cache_drop_c_commu_list4c_member_id($comment['c_member_id']); + $data = array( 'c_commu_id' => intval($comment['c_commu_id']), 'c_member_id' => intval($comment['c_member_id']),
comment:10 Changed 14 years ago by
Keywords: | OpenPNE2.8.9 OpenPNE2.11.5 added; 確認中 removed |
---|---|
Milestone: | OpenPNE2.11.5 → OpenPNE2.10.4 |
安定版で入れるかどうかを検討したいと思います。
とりあえず対応項目とします。
comment:12 Changed 14 years ago by
Keywords: | 確認中 added |
---|
comment:13 Changed 14 years ago by
Version: | → 2.8.x & 2.10.x & 2.11.x |
---|
comment:14 Changed 14 years ago by
Keywords: | テスト待ち added; 確認中 removed |
---|
comment:15 Changed 14 years ago by
Keywords: | テスト待ち removed |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
動作テストが行えないため完了とします。
5146