Yukiです。
今日は情報の取得方法について学びます。
PostgreSQLを管理する上でいろいろと情報を取得したくなるものです。
ここの設定はどうなっているんだろうとか、
セッションの情報はどうなっているとか、
その方法について学びました。
情報の取得
情報の取得方法によって、3つに分けます。
システム情報取得関数
システム情報を取得する関数です。
ややこしいのが、カッコが付くのと付かないのがあるんですよね。
この違いは何なんでしょう?
どうやらSQL規格で決まっているものは付かないらしいです。
カッコが付かないほうが少数派のようなので、こちらを暗記します。
ユーザ系は付かないみたいですね。
current_dateが付かないのはなんででしょう?
ある・なしクイズみたいです。
引数があるのは付くとして、どうやって見分ければいいのか。
丸暗記しかないんですかね…
カッコが付かない
- user
- current_user
- current_role
- current_date ★
★のcurrent_dateだけ仲間外れですね。
current_timeやcurrent_timestampは精度の引数を持つので、カッコが付くパターンもありますが、current_dateには精度がないからでしょうか。
カッコが付く
- version()関数
- current_database()関数
- clock_timestamp()関数
両方ある
- current_time, current_time( integer )
- current_timestamp, current_timestamp( integer )
- localtime, localtime( integer )
- current_schema, current_schema() ★
★のcurrent_schemaが両方あるのが謎です。
マニュアルは、「9.26. システム情報関数と演算子」と「9.9. 日付/時刻関数と演算子」を参照しました。
情報スキーマ
標準SQLで規定されているビューです。
information_schemaというスキーマにあります。
標準SQLで規定されているので、ほかのDBMSと互換性がありますが、PostgreSQL固有の情報は取れません。
互換性と言いますが、Oracleにはないですね。
私が知らないだけでしょうか?
システムカタログ
PostgreSQL固有の情報も取るならシステムカタログから取得します。
pg_~で始まるテーブル群です。
もしかしたら、例外もありますかね? pg_~で始まらないのとか。
pg_classで表やビューの情報が見られるのが有名ですね。
まとめ
今日は、PostgreSQLから情報を取得する方法を学びました。
多分、今日挙げたものだけだと全然足りないですね。
管理するうちに、いろいろな関数やテーブル/ビューを覚えていくのだと思います。
Oracleはリファレンスで調べなくても、よく使うビューはある程度覚えてますし。
先が楽しみです。
Photo by Sneha Cecil on Unsplash
コメント