PostgreSQLはcontribディレクトリに格納された拡張機能を使う事ができます。この章ではcontribモジュールのインストール方法および使い方について説明します。
- PostgreSQL インストール
- PostgreSQL データベースの作成
- PostgreSQL contribモジュールの使い方 (いまここ)
- PostgreSQL パラメタの設定方法
- PostgreSQL ベンチマークツールの紹介
- PostgreSQL WAL(Write Ahead Log)の基本説明
- PostgreSQL バックアップとリストア
- PostgreSQL PITR(Point In Time Recovery)基本概念の説明
- PostgreSQL PITR(Point In Time Recovery)操作方法の説明
- PostgreSQL PITR(Point In Time Recovery)タイムライン操作
- PostgreSQL ストリーミングレプリケーションの最小構成
- PostgreSQL ストリーミングレプリケーションのパラメタ説明
- PostgreSQL ストリーミングレプリケーションの障害復旧
- PostgreSQL ストリーミングレプリケーションの多段構成
- PostgreSQL ストリーミングレプリケーションのDR向け設定
- PostgreSQL ストリーミングレプリケーションのコンフリクト
- PostgreSQL 自動バキューム(AUTO VACUUM)
- PostgreSQL HOT(Heap Only Tuple)
- PostgreSQL インデックスのメンテナンス
- PostgreSQL 統計情報の更新
- PostgreSQL 実行計画
- PostgreSQL スロークエリの調査方法
contribのインストール
初期状態の確認
contribモジュールはSHAREDIR/extensionに格納します。SHAREDIRの位置はpg_configコマンドで確認する事ができます。デフォルト設定の場合は以下の通りです。
[postgres@centos10 ~]$ /usr/pgsql-13/bin/pg_config | grep SHAREDIR SHAREDIR = /usr/pgsql-13/share
初期状態の場合、ほとんどモジュールが格納されていません。
[postgres@centos10 ~]$ ls -l /usr/pgsql-13/share/extension/ 合計 8 -rw-r--r--. 1 root root 658 11月 12 05:48 plpgsql--1.0.sql -rw-r--r--. 1 root root 193 11月 12 05:48 plpgsql.control
contribのインストール
contribモジュールはRPMパッケージとして提供されています。以下のような操作でインストールが可能です。
dnf install postgresql13-contrib
インストールが完了すると、SHAREDIR/extension配下にファイル群が格納されます。
[postgres@centos10 ~]$ ls -l /usr/pgsql-13/share/extension/ total 1004 -rw-r--r--. 1 root root 274 Dec 24 08:24 adminpack--1.0--1.1.sql -rw-r--r--. 1 root root 1535 Dec 24 08:24 adminpack--1.0.sql -rw-r--r--. 1 root root 1682 Dec 24 08:24 adminpack--1.1--2.0.sql -rw-r--r--. 1 root root 595 Dec 24 08:24 adminpack--2.0--2.1.sql -rw-r--r--. 1 root root 176 Dec 24 08:24 adminpack.control -rw-r--r--. 1 root root 931 Dec 24 08:24 amcheck--1.0--1.1.sql -rw-r--r--. 1 root root 704 Dec 24 08:24 amcheck--1.0.sql -rw-r--r--. 1 root root 705 Dec 24 08:24 amcheck--1.1--1.2.sql -rw-r--r--. 1 root root 154 Dec 24 08:24 amcheck.control -rw-r--r--. 1 root root 249 Dec 24 08:24 autoinc--1.0.sql -rw-r--r--. 1 root root 149 Dec 24 08:24 autoinc.control -rw-r--r--. 1 root root 666 Dec 24 08:24 bloom--1.0.sql -rw-r--r--. 1 root root 156 Dec 24 08:24 bloom.control <omitted>
contribの使い方
ドキュメント参照方法
contribモジュールの一覧は、マニュアルの付録を参照ください(「英文マニュアル」「日本語マニュアル」)。
公式ドキュメントの「VIII. Appendixes」「F. Additional Supplied Modules」の順に押下します。

使ってみたいモジュールを押下します。

モジュールの中に含まれているファンクションの一覧を見る事が出来ます。以下の画面ならば、pgstattupleなどの関数が使える事が分かります。

contribの使い方
テストデータとして、「PostgreSQLチュートリアル」で紹介されているサンプルデータベースをインポートします。
createdb dvdrental wget https://sp.postgresqltutorial.com/wp-content/uploads/2019/05/dvdrental.zip unzip dvdrental.zip pg_restore -d dvdrental dvdrental.tar rm dvdrental.tar dvdrental.zip
contribモジュールを使うには以下のコマンドを実行します。このコマンドを実行すると、/usr/pgsql-13/share/extension/<モジュール名>.controlを読み込みます。
CREATE EXTENSION <モジュール名>
実行例は以下の通りです。
[postgres@centos10 ~]$ psql dvdrental psql (13.1) Type "help" for help. dvdrental=# CREATE EXTENSION pgstattuple; CREATE EXTENSION dvdrental=#
読み込んだモジュール(extensions)の一覧は以下のコマンドで確認できます。
dvdrental=# \dx
List of installed extensions
Name | Version | Schema | Description
-------------+---------+------------+------------------------------
pgstattuple | 1.5 | public | show tuple-level statistics
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
ファンクションの一覧も含めて表示するには以下のようなコマンドを実行します。
dvdrental=# \dx+
Objects in extension "pgstattuple"
Object description
----------------------------------
関数pg_relpages(regclass)
関数pg_relpages(text)
関数pgstatginindex(regclass)
関数pgstathashindex(regclass)
関数pgstatindex(regclass)
関数pgstatindex(text)
関数pgstattuple(regclass)
関数pgstattuple(text)
関数pgstattuple_approx(regclass)
(9 rows)
Objects in extension "plpgsql"
Object description
--------------------------------------
関数plpgsql_call_handler()
関数plpgsql_inline_handler(internal)
関数plpgsql_validator(oid)
言語plpgsql
(4 rows)
動作確認のために、indexの統計情報を表示するpgstatindexを使ってみます。pgstatindexの引数にindex名を指定します。
操作例は以下の通りです。
dvdrental=# \x
Expanded display is on.
dvdrental=# SELECT * FROM pgstatindex('actor_pkey');
-[ RECORD 1 ]------+------
version | 4
tree_level | 0
index_size | 16384
root_block_no | 1
internal_pages | 0
leaf_pages | 1
empty_pages | 0
deleted_pages | 0
avg_leaf_density | 49.12
leaf_fragmentation | 0
