【入門編】 pg_class – PostgreSQL

こんにちは!データベースの世界へようこそ。
普段、PostgreSQLを使っていると「データを入れるテーブル」や「検索を速くするインデックス」を当たり前のように作っていますよね。でも、ふとこんな風に思ったことはありませんか?

「PostgreSQLって、私が作ったたくさんのテーブルやインデックスを、一体どうやって管理しているんだろう?」

実は、データベースの中には「何がどこにあるか」をすべて記録した、究極の管理台帳が存在するんです。それが今回紹介する『pg_class(ピージー・クラス)』です。

これを知ると、PostgreSQLというシステムの見え方がガラリと変わりますよ。さっそく紐解いていきましょう!

—

データベース界の「図書館の図書カード」

皆さんは、大きな図書館に行ったことはありますか?
あの中には何万冊もの本がありますが、受付のおじさんは「あの本はどこにある?」と聞かれたら、すぐに場所を教えてくれますよね。それは、手元にすべての本のデータが書かれた「図書カード(目録)」があるからです。

PostgreSQLにとっての『pg_class』は、まさにそれと同じ役割を果たしています。

  • 私たちが「テーブル」を作る。
  • 「インデックス」を貼る。
  • 数値を自動で増やす「シーケンス」を作る。

これらを作った瞬間、PostgreSQLは裏側で「はい、承知しました!」と言って、`pg_class`という名簿にその名前や特徴を書き込んでいるんです。

そもそも「クラス」って何?

名前に「クラス」と付いているので、プログラミングをかじったことがある人は「オブジェクト指向のクラス?」と思うかもしれません。でも、PostgreSQLにおける「クラス」は、もっとシンプルに「管理対象のグループ」だと思ってください。

PostgreSQLの世界では、以下のものはすべて兄弟のような扱いを受けています。

  • テーブル(おなじみのデータ置き場)
  • インデックス(本でいう索引)
  • シーケンス(IDを自動採番するやつ)
  • ビュー(検索結果をテーブルのように見せるもの)

これらは形は違いますが、すべて「名前があって、どこかにデータを持っている」という共通点がありますよね。だから、PostgreSQLはこれらをひとまとめにして『pg_class』という一つの大きな名簿で管理しているんです。頭がいいですよね!

実際に中身を覗いてみると…?

百聞は一見にしかず。皆さんのPostgreSQLでも、実際に中身を見てみましょう。SQLツールでこう打ってみてください。

SELECT relname, relkind FROM pg_class LIMIT 10;

`relname` はリレーション(対象物)の名前、`relkind` はそれが何者か(テーブルなのかインデックスなのか)を表す種類です。

実行してみると、見たこともないような英数字の羅列が並ぶかもしれません。実は、皆さんが作ったテーブル以外にも、PostgreSQL自身が動くために必要な「システム用のテーブル」がびっしり詰まっているんです。

「うわっ、こんなに裏で頑張ってたの!?」と驚くはずですよ。

なぜこの知識が大事なの?

「別に`pg_class`なんて意識しなくても、SQLさえ書ければいいじゃん」

そう思うかもしれません。確かに、普段の開発ならそれでも大丈夫です。でも、もし皆さんが将来こんな壁にぶつかったとき、この知識が救いになります。

  • 「テーブルのサイズを調べたいけれど、どこを見ればいいの?」
  • 「システムが急に重くなった。隠れたインデックスが原因じゃないか?」

`pg_class`を知っていると、PostgreSQLという「ブラックボックス」の中身を自分で覗き込んで、トラブルの原因を突き止めることができるようになるんです。これって、エンジニアとしてすごくカッコいいスキルだと思いませんか?

—

まとめ

最後に、今日の内容をまとめておきますね。

  • pg_classは、PostgreSQLの「全てを知る名簿」である。
  • テーブル、インデックス、シーケンスなど、あらゆるものがここに記録されている。
  • これを覗くことは、データベースの「裏側の仕組み」を理解する第一歩になる。

まずは「`SELECT FROM pg_class`」で、自分のデータベースが何を抱えているのか、ちょっと覗いてみることから始めてみてください。きっと、愛着がもっと湧いてくるはずですよ。

それでは、また次回の記事でお会いしましょう!データベースライフを楽しんでくださいね。

コメント

タイトルとURLをコピーしました