ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 11 years ago

Closed 11 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 kunitada)

■現象

参加コミュニティ書き込み一覧の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 11 years ago by kunitada

Description: modified (diff)

comment:2 Changed 11 years ago by katafuchi

Status: newassigned

comment:3 Changed 11 years ago by katafuchi

Keywords: 確認中 added

5146

comment:4 Changed 11 years ago by kunitada

comment:5 Changed 11 years ago by ykimura

トピック書き込み時にキャッシュが破棄されていないようです。

comment:6 Changed 11 years ago by ykimura

トピック書き込み時に自分の分のキャッシュを破棄するパッチになります

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:7 Changed 11 years ago by katafuchi

[5250]にて修正いたしました

comment:8 Changed 11 years ago by ogawa

r5282 でタブを置換しました。

comment:9 Changed 11 years ago by ogawa

r5283 で空行を削除しました。

comment:10 Changed 11 years ago by ebihara

Keywords: OpenPNE2.8.9 OpenPNE2.11.5 added; 確認中 removed
Milestone: OpenPNE2.11.5OpenPNE2.10.4

安定版で入れるかどうかを検討したいと思います。

とりあえず対応項目とします。

comment:11 Changed 11 years ago by ebihara

コードを見てみた限りでは問題ないと思うので、安定版にマージしてしまいます。

comment:12 Changed 11 years ago by ebihara

Keywords: 確認中 added

以下で安定版にマージしました。ご確認ください。

comment:13 Changed 11 years ago by ogawa

Version: 2.8.x & 2.10.x & 2.11.x

comment:14 Changed 11 years ago by ogawa

Keywords: テスト待ち added; 確認中 removed

comment:15 Changed 11 years ago by kiwa

Keywords: テスト待ち removed
Resolution: fixed
Status: assignedclosed

動作テストが行えないため完了とします。

Note: See TracTickets for help on using tickets.