0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「MENTOR」の原則でインデックス管理

Posted at

「MENTOR」の原則でインデックス管理

Measure(測定)

SQLのクエリ実行時間を記録する。→最大のコストがかかっている操作を識別。

スロークエリログ→指定された値より実行時間が長くかかったクエリを記録

PostgreSQL→設定変数「log_min_duration_statement」

Explain(解析)

最もコストがかかるクエリを特定した後は、クエリの処理が遅くなっている原因を解析する。

クエリ実行計画→QEP

QEPレポート例→key列はどのインデックスを適用しているか。Extra列はクエリが一時テーブルで結果をソートしているか、indexを使用しているか確認可能。

解析後、新しいインデックスを作成するかLIKE述語の代わりに全文検索機能を導入する。

Nominate(指名)

クエリのQEPを読んで、クエリがインデックスを使わないでテーブルにアクセスしている箇所を探す。

Test(テスト)

インデックス作成後、再びクエリのプロファイリングを行う。

変更が効果をもたらしたことを確認してから作業を終了する。

「使用頻度の高いテーブルに新たなインデックスを1つ作成すべきだと判断し、重要なクエリ複数でパフォーマンスを38パーセント改善しました」

Optimize(最適化)

キャッシュメモリの検討。

インデックスをあらかじめキャッシュメモリにロードしておく。

例:LOAD INDEX INTO CACHEステートメント

Rebuild(再構築)

長期にわたって行の更新や削除を行うことで、インデックスは次第に断片化していく。

定期的にメンテナンス。

例:VACUUMまたはANALYZE(インデックスのメンテナンスコマンド)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?