萌えハッカーニュースリーダー

2025/11/15 03:07 Postgres Internals Hiding in Plain Sight

出典: https://www.crunchydata.com/blog/postgres-internals-hiding-in-plain-sight
hakase
博士

やあ、ロボ子。Postgresが内部に大量のデータを集めてるって知ってたかのじゃ?

roboko
ロボ子

はい、博士。Postgresの内部カタログは、Postgres自身を追跡するために使われると聞きました。

hakase
博士

そうそう!たとえば、`\d {tablename}`で特定のテーブルを記述できるし、`\di`で全てのインデックスをリストできるぞ。

roboko
ロボ子

`\dx`でインストールされている拡張機能をリストしたり、`\dp`でアクセス権限を表示したりもできますね。

hakase
博士

`\dp+`を使うと、ロールとアクセス詳細を持つテーブルとビューを表示できるのじゃ。便利だぞ。

roboko
ロボ子

構成設定を確認する`\dconfig`や、テーブルを記述する`\dt {tablename}`もありますね。

hakase
博士

さらに、`\dti+`でサイズを持つテーブルとインデックスを表示したり、`\dg+`でロール名を表示したりできるのじゃ。

roboko
ロボ子

関数を表示する`\df`や、ビューを記述する`\dv {view name}`もありますね。データベースをリストする`\l`も便利です。

hakase
博士

ふむふむ。`pg_stat_activity`は現在のデータベースアクティビティを表示するのじゃ。実行中のクエリとか、状態とか、クライアント情報とか。

roboko
ロボ子

`pg_stat_statements`は、すべてのデータベースで実行されたすべてのクエリの実行統計を追跡します。ただし、pg_stat_statements拡張機能が必要ですね。

hakase
博士

データベース全体の統計を見るなら`pg_stat_database`じゃな。接続数とかトランザクション数とかI/Oとか。

roboko
ロボ子

`pg_locks`はアクティブなプロセスによって保持されているロックに関する情報を表示します。

hakase
博士

`pg_stat_user_tables`はテーブルに関する統計を提供するのじゃ。シーケンシャルスキャンとかインデックススキャンとか。

roboko
ロボ子

行レベルの操作(挿入、更新、削除)もわかりますね。`pg_stat_user_indexes`はユーザーインデックスに関する統計を提供します。

hakase
博士

`pg_settings`は構成パラメータを表示するのじゃ。現在の値とか説明とか。

roboko
ロボ子

`pg_roles`はすべてのシステムロール(ユーザーとグループを含む)を記述します。権限やログイン機能の確認に役立ちますね。

hakase
博士

`pg_database`はクラスタ内のすべてのデータベースを含むのじゃ。各データベースの所有者とか文字エンコーディングとか。

roboko
ロボ子

`pg_stats`は列に関するすべての詳細を収集します。カーディナリティなどですね。

hakase
博士

`pg_class`はデータベース内のすべてのテーブル、インデックス、シーケンス、ビューなどの行を含むのじゃ。

roboko
ロボ子

`pg_type`は存在するすべてのデータ型を格納し、`pg_proc`はPostgresが使用できるすべての関数とストアドプロシージャのカタログです。

hakase
博士

そして`pg_attribute`はテーブルの列に関する情報を格納するのじゃ。全てのテーブルの全ての列に対して1つの行がある。

roboko
ロボ子

`pg_catalog`はシステムテーブルを保持するスキーマですね。

hakase
博士

psqlで`\ECHO_HIDDEN`または`-E`引数を使うと、基になるSQLを把握できるぞ。

roboko
ロボ子

Postgresの内部にアクセスする方法は、`\d`コマンドから始めて、`pg_stat_activity`などのビューを使い、`pg_catalog`スキーマにアクセスする、という流れですね。

hakase
博士

そうじゃ!`-E`や`echo_hidden`は、関連するテーブルを確認するのに役立つぞ。ところでロボ子、Postgresの中身って、まるで私の部屋みたいじゃな。ごちゃごちゃしてるけど、必要なものは全部ある!

roboko
ロボ子

博士の部屋は、時々、何がどこにあるかわからなくなることがありますね…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search