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

Opened 11 years ago

Closed 11 years ago

#2350 closed defect (fixed)

管理画面のアップロード画像管理から各種テーブルに関連づいた画像を削除すると高負荷になる

Reported by: ebihara Owned by: ebihara
Priority: critical Milestone: OpenPNE2.10.6
Component: 指定しない Version: 2.8.x & 2.10.x & 2.11.x
Keywords: OpenPNE2.8.11 OpenPNE2.12beta2 Cc:

Description

管理画面のアップロード画像管理から各種テーブルに関連づいた画像を削除すると高負荷になる。

画像を削除する際、 db_admin_delete_c_image_link4image_filename() をコールするが、これは関連づいた画像ファイル名を保持している可能性のある「すべてのテーブル」の「すべてのフィールド」を「無条件で」空にしようとUPDATE文を発行する。

そのためファイル名からテーブルが類推できる画像ファイルであっても、毎回以下のフィールドに対してUPDATE文を発行してしまう。

  • c_commu.image_filename
  • c_commu_topic_comment.image_filename1
  • c_commu_topic_comment.image_filename2
  • c_commu_topic_comment.image_filename3
  • c_diary.image_filename_1
  • c_diary.image_filename_2
  • c_diary.image_filename_3
  • c_diary_comment.image_filename_1
  • c_diary_comment.image_filename_2
  • c_diary_comment.image_filename_3
  • c_member.image_filename_1
  • c_member.image_filename_2
  • c_member.image_filename_3

Change History (7)

comment:1 Changed 11 years ago by ebihara

Owner: changed from nobody to ebihara
Status: newassigned

修正方針を明確にします。

comment:2 Changed 11 years ago by ebihara

以下の対処をしようと思います。

  • admin_page_list_c_image でおこなっている「ファイル名からリンクするべきアクションを類推」するロジックを参考に、db_admin_delete_c_image_link4image_filename() においても、「ファイル名から操作対象のテーブルを類推」し、そのテーブルについてのみUPDATE文を発行するようにする
    • 削除対象となる画像については判別のための接頭辞が必ず付加されるため類推は容易
  • SELECT 文を発行し関連付けを削除したいファイル名が存在するフィールドを特定したうえでUPDATE文を発行するようにする

comment:3 Changed 11 years ago by ebihara

ファイル名から対象となるテーブルを類推し、そのテーブルに対してUPDATE文を発行するという対処のみを施します。

comment:4 Changed 11 years ago by ebihara

Keywords: 確認中 added

以下で対処をおこないました。

プレフィクスからどのテーブルに関連づいた画像なのかを判別するロジックを共通化したいなどいろいろ課題はありますが、本チケットの対応範囲としては以下で完了したいと思います。

comment:5 Changed 11 years ago by ogawa

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

アルバム画像は、#2265 で対応ということでテスト待ちにします。

comment:6 Changed 11 years ago by ebihara

r7066 で、コールする関数を間違ってしまっていたのを修正しました(2.12.xのみ)。trunk には r7067 でマージしました。

comment:7 Changed 11 years ago by kiwa

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

確認しました。開発版のテストはbetaでやるとして、こちらは閉じます。

Note: See TracTickets for help on using tickets.