PostgreSQLのパフォーマンス改善用のメモ
個人的に色々と参考させていただいているものをまとめました。
HugePages
オンプレのLinuxは有効にすることを検討する。
- Improving PostgreSQL performance without making changes to PostgreSQL
- Cloud SQL for PostgreSQL が新たに Linux Huge Pages をサポート | Google Cloud 公式ブログ
- 18.4. カーネルリソースの管理
- 18.4.5. LinuxのHugePages
- 19.4. 資源の消費
- huge_pages
インデックス
カバリングインデックスの作成も検討する。
ただ、インデックスオンリースキャンを狙いにいっても可視性の情報はみないといけないので更新が多いテーブルは注意する。
- 11.9. インデックスオンリースキャンとカバリングインデックス
- パフォーマンスを考慮したIndex定義設計 | TECHSCORE BLOG
- データベースのインデックスの種類と内部の仕組み|SQL Serverで数億規模のデータ量を扱ってみて | 釣りキチ翔平の備忘録
FILLFACTOR
更新が多いテーブルはFILLFACTORを設定することを検討する。
ロック管理
場合によるが、deadlock_timeout
の変更を検討する。
デッドロック検出処理が同時セッション数の分行われサーバ負荷が高くなってどうにもならなくなる可能性を考慮する。
ユーザ定義関数が返す行数の推定値
デフォルト推定値(ROWS result_rows
)は1000行になっているので変更することを検討する。
- CREATE FUNCTION
- 37.11. 関数最適化に関する情報
- 12からドキュメントがある
パーティショニング
結構データ量ないと意味ない感じと思われる(11系で約100万行だと変わらなかった)
意味ある状況に遭遇したい。
- パーティショニングの概要|PostgreSQLインサイド : 富士通
- 利用するなら12系以上は望ましい
- MySQL のパーティショニングで速くなる?ならない?問題、あらためて実験してみた - Qiita
全体的に参考にしているもの
- 2018年度WG3活動報告書 性能トラブル調査編
- https://dbstudychugoku.github.io/pdf/20140713_postgre_tuning.pdf
- https://www.postgresql.jp/sites/default/files/2017-01/T5_jissen_PostgreSQL_unyou.pdf
- https://pgecons-sec-tech.github.io/tech-report/presentation/PGECons_20181018_parallel.pdf
- https://www.pgecons.org/wp-content/uploads/PGECons/2013/WG2/11_PerformanceTuning.pdf
- https://www.pgecons.org/wp-content/uploads/2021/09/50a72f0dfa24a14d9aa77020f550f2a0.pdf
- https://pgecons-sec-tech.github.io/tech-report/pdf/wg2_PostgresSelfStudyBook.pdf
- パフォーマンスチューニング9つの技 ~はじめに~|PostgreSQLインサイド : 富士通
バージョンアップによる改善メモ
リリースノートを見て気になったものを抜粋。
あと、11からバージョンアップする場合はJITの挙動に注意する。
11 → 12
- E.5. リリース12
- https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2019/10/pg12_report_1004.pdf
- 4.5. インデックスの機能追加・性能改善
- 4.6. パーティショニングの改善
- 12から性能が明らかに向上
- 4.7. WITH 句の最適化
- 場合によってはインデクススキャンになり得る
- PostgreSQL 12 に関する技術情報
12 → 13
- E.2. リリース13
- https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2020/12/pg13_report_1203.pdf
- 4.1. B-Tree インデックスの性能向上
- 4.2.1. インクリメンタルソート
- PostgreSQL 13 に関する技術情報
13 → 14
- E.6. リリース 14
- https://www.sraoss.co.jp/tech-blog/wp-content/uploads/2021/08/pg14_report_20210818.pdf
- 4.1.1. Btree インデックスの肥大化抑止
- 4.1.5. ロジカルレプリケーションの改善
- 4.1.6. パラレルクエリ対応の拡張
- PostgreSQL 14 に関する技術情報