こんにちは、
Discourse ベースのフォーラムを Azure 上の「Azure Database for PostgreSQL」インスタンスでホストしています。このサービスの利点の一つは、「データベース特性」や使用状況に基づいたパフォーマンスの推奨事項が提供されることです。
Azure への移行後、不足しているインデックスやおそらく冗長なインデックスに関するいくつかのヒントを受け取りましたので、共有させていただきます。
これらの不足しているインデックスを作成した後、全体のパフォーマンスはわずかに(それほどではありませんが)向上しましたが、今後のアップデートやデータベースマイグレーションを破損させる可能性があるため、DROP INDEX の推奨事項は適用できませんでした。いずれにせよ、これらのインデックスを削除しても安全かどうか、あるいはパフォーマンスに悪影響を及ぼすかどうかは判断できません。
以下は、Azure が作成を推奨したインデックス(影響度:「低」および「中程度」)です。
create-indexes.csv (1.5 KB)
以下は、「すでにカバードされている」インデックスに関する推奨事項です。
サマリー
テーブル
public.optimized_images上のインデックスindex_optimized_images_on_upload_idを削除してください。
理由:このインデックスはindex_optimized_images_on_upload_id_and_width_and_heightによってカバードされています。
テーブル
public.post_revisions上のインデックスindex_post_revisions_on_post_idを削除してください。
理由:このインデックスはindex_post_revisions_on_post_id_and_numberによってカバードされています。
テーブル
public.post_timings上のインデックスpost_timings_summaryを削除してください。
理由:このインデックスはpost_timings_uniqueによってカバードされています。
テーブル
public.topic_links上のインデックスindex_topic_links_on_topic_idを削除してください。
理由:このインデックスはunique_post_linksによってカバードされています。
テーブル
public.post_uploads上のインデックスindex_post_uploads_on_post_idを削除してください。
理由:このインデックスはidx_unique_post_uploadsによってカバードされています。
これらの「DROP」推奨事項は、パフォーマンス向上ではなく、むしろデータベース全体のサイズ削減にのみ影響する可能性があるため、慎重に検討してください。例えば、当社のデータベース全体は約 120GB を使用していますが、これらの推奨事項すべてを適用しても解放されるのは 422MB に過ぎません。Azure 自体も影響度を「低」と定義しています。つまり、これは単なるクリーンアップ作業のようです。
前述の通り、パフォーマンスを少し改善する可能性があるため、この情報を共有させていただきました。これらのインデックス以外に、Azure サービスを利用している間、他の推奨事項は提供されませんでした。
よろしくお願いいたします、
サッシャ