Azure PSQLによるデータベースパフォーマンスの推奨事項

こんにちは、

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 サービスを利用している間、他の推奨事項は提供されませんでした。

よろしくお願いいたします、
サッシャ

「いいね!」 8

シェアしてくれてありがとう。いくつかの推奨事項は少し奇妙だ…

CREATE INDEX index_topics_on_category_id ON public.topics USING btree (category_id)
CREATE INDEX index_topics_on_category_id_and_id ON public.topics USING btree (category_id, id)
CREATE INDEX index_topics_on_id_and_category_id ON public.topics USING btree (category_id, id)

この提案されている重複したトリプルインデックスは選択性が非常に低く、このようなインデックスの問題点は、プランナーがそれらを正しく無視する傾向があることだ。もし異なる値が10個しかないなら、topic_id のような他の要素と組み合わせる必要がある。

未使用のインデックスについては、約6か月前にインフラ上で触れていないインデックスを探すためにデータベースの統計情報を分析した。いくつか削除したが、このトピックは改めてこのプロセスを実行する良いリマインダーになった。

投稿ありがとう。

「いいね!」 4

返信とこれら3つのインデックスへの案内をありがとうございます。推奨事項が一度に提示されたわけではなく、数週間にわたって個別に適用したため、この重複には気づいていませんでした。
DROP 推奨事項にこれらが含まれていないのは非常に奇妙です。Azure にはまだ改善の余地がありそうです :smiley:(そのため、推奨事項は二度確認する必要があります)。

よろしくお願いいたします

「いいね!」 1