PostgreSQL : アクセス統計情報 「テーブル毎のブロックI/O」

はじめに

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道場

コメントする