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?

PostgreSQLでシステムテスト以降で性能を改善する監視すべきポイント その1

0
Last updated at Posted at 2026-04-07

統計情報

PostgreSQLは 統計情報が非常に充実しているため、性能対策に活かすことができる。
統計情報を活用すべきです!

以下に具体例をお伝えします。

不要なINDEX その1

INDEXは 検索を速くするための仕組みだが、検索を速くするため、
本の索引と同様、データが登録される度に 索引の項目で並び替えているため、
検索以外の処理が遅くなる。

以下に、INDEXスキャンされた累計回数が記録されているため、
Primary Key以外のINDEXで、0のINDEXを削除する。

pg_stat_user_indexes.idx_scan

Primary KeyのINDEXは、スキャン回数が0回でも
他に役割があるため、削除してはいけない。

Primary Keyの項目は、以下で確認可能。もしくは設計書。

table_constraints.constraint_type が 'PRIMARY KEY'
table_constraints.constraint_name を constraint_column_usage.constraint_name と結合し、
得られる constraint_column_usage.column_name

INDEXの項目は 以下で確認可能。

pg_indexes.indexdef

不要なINDEX その2

不要なINDEXは もう1つある。
私の経験上 結構あるが、意外に知られていない。

項目AがPrimary Keyだった場合、項目Aと項目Bを持ったINDEX。

項目AはUnique Keyのため、項目Aで検索した際、既にデータは1件に絞られている。
※もしくは0件
そのため、これ以上 項目Bで検索する必要がない。

項目数が多いため、INDEXのサイズが大きくなってしまい、
この余分なINDEXがあることによって、
・検索以外の処理が遅くなる
・検索処理が遅くなる(INDEXのサイズが大きくなるため)

 
他にもありますが、今回はINDEXについてお伝えしました。
INDEX以外につきましては、次回お伝えします。

 
この辺りの話は、以下のブログにまとめておりますので、是非参考にしてみて下さい。

PostgreSQL 纏め
https://chakugan.hatenablog.com/entry/2021/12/31/140837

 

補足(より深く学びたい方へ)

今回のような「性能問題の原因分析」や、
実務での運用・チューニング手順について、講座で体系的に解説しています。
https://www.udemy.com/course/postgresql-sql/?referralCode=64B372729B6BC0073ACB

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?