はじめに
PostgreSQLを勉強するにあたって、構築や運用で必要そうな事を備忘として記事にしました。
本記事は、各テーブルI/Oについてのアクセス統計情報について記載しています。
前提
PostgreSQL 13 を使用しています。
pg_statio_all_tablesについて
pg_statio_all_tablesビューは、テーブル毎のブロック単位のI/Oに関する統計情報を表示します。
基本的に「*_blks_read」はディスク、「*_blks_hit」はメモリの読み込みを意味します。
注意点として、「*_blks_read」は、OSのキャッシュ(メモリ)から読み取られた場合でもカウントアップするため、ディスクアクセス量をそのまま表示しているわけではありません。
pg_statio_all_tablesでは、テーブルに対して作成されているインデックスの統計情報の収集値を確認できます。同一テーブルに対してインデックスが複数作成されている場合、合算値が表示されます。個別でみるためには「pg_stat_all_indexes」等を利用します。
利用目的
- テーブル毎のブロックI/Oの調査
コマンド
SELECT * FROM pg_statio_all_tables;

図. pg_statio_all_tablesビューの実行
主な表示項目
表. pg_statio_all_tablesビューの主な項目
ビュー | 説明 |
---|---|
relid | テーブルのOID |
schemaname | 属しているスキーマ名 |
relname | テーブル名 |
heap_blks_read | テーブルに対するディスクブロック抽出要求数からheap_blks_hitを引いた数 |
heap_blks_hit | テーブルに対するディスクブロック抽出要求数のうちキャッシュ内に存在した数 |
idx_blks_read | テーブル上の全インデックスに対するディスクブロック抽出要求数からidx_bls_hitを引いた数 |
idx_blks_hit | テーブル上の全インデックスに対するディスクブロック抽出要求のうち、キャッシュ内に存在した数 |
参考文献
1. 勝俣 智成, 佐伯 昌樹, 原田 登志 (2018)「[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則」技術評論社
2. 河原 翔 (2014)「LPI-Japan OSS-DB Gold 認定教材 PostgreSQL 高度技術者育成テキスト」エヌ・ティ・ティ・ソフトウェア株式会社
3. OSS-DB道場