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

Opened 10 years ago

Last modified 10 years ago

#1145 new enhancement

管理画面の検索機能のチューニング

Reported by: yamaguchi Owned by: nobody
Priority: minor Milestone:
Component: pne-admin Version:
Keywords: Cc:

Description (last modified by kiwa)

■概要

管理画面の検索機能のチューニングを行う

■仕様

■関連情報

  • 報告元
    ユーザが多いSNSの場合、管理画面の検索機能の検索結果を出すまでにかなり時間が掛かってしまう。
    またそれが原因とは限らないが検索中、SNSが重くなっていた。
    今後もユーザ数の大きなSNSが出てくるので早めの対応をお願いします。
    http://openpne.jp/?m=pc&a=page_fh_diary&target_c_diary_id=12042
    

Change History (8)

comment:1 Changed 10 years ago by ebihara

Owner: changed from nobody to ebihara

國忠さんから振られたので。acceptはまだ

comment:2 Changed 10 years ago by ebihara

Status: newassigned

見てみます。

comment:3 Changed 10 years ago by ebihara

ざっと見ただけですが、_db_admin_c_member_list()の以下が気になります。

    foreach ($ids as $id) {
        $c_member_list[] = db_member_c_member4c_member_id($id, true, true, 'private');
    }

ユーザ1人につき1クエリじゃなくて、WHERE IN (...) で一括で取ってきた方が多分少しは速いんじゃないかな、と。

comment:4 Changed 10 years ago by ebihara

予想通り、_db_admin_c_member_list()内のdb_member_c_member4c_member_id($id, true, true, 'private');をループでforeachで何十回もまわしている箇所がボトルネックでした。

試しに配列でメンバーを指定できるようにしたdb_member_c_member4c_member_id()で試してみたら、以下の通り、3割~6割ほどの速度改善が見込めました。

表示件数:20件

  • 通常版 0.635684967041(s)
  • 配列版 0.352864027023(s)

表示件数:50件

  • 通常版 1.34860086441(s)
  • 配列版 0.916195869446(s)

表示件数:100件

  • 通常版 2.46081805229(s)
  • 配列版 1.9507329464(s)

また、db_member_c_member4c_member_id()にも db_member_c_member_secure4c_member_id($c_member_id) と db_member_c_member_profile_list4c_member_id($c_member_id, $public_flag) をコールしている箇所があるので、これらもすべて配列指定に対応すればかなりの速度改善に繋がります。

ですので、対応策としては、配列によるメンバー指定に対応した管理画面メンバーリスト独自のdb_member_c_member4c_member_id()と同等の関数を作成するのが(速度的には)いいと思います。

comment:5 Changed 10 years ago by ebihara

Description: modified (diff)
Owner: changed from ebihara to nobody
Status: assignednew

いったん手放します。

comment:6 Changed 10 years ago by kunitada

Milestone: OpenPNE2.10OpenPNE2.12

comment:7 Changed 10 years ago by kiwa

Description: modified (diff)
Milestone: OpenPNE2.12.0
Priority: criticalmajor

対応未定なので

comment:8 Changed 10 years ago by kiwa

Priority: majorminor

プライオリティ間違えました・・・

Note: See TracTickets for help on using tickets.