PostgreSQL 13 contribモジュールの使い方

スポンサーリンク

PostgreSQLはcontribディレクトリに格納された拡張機能を使う事ができます。この章ではcontribモジュールのインストール方法および使い方について説明します。

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」の順に押下します。

postgresql contrib module 001

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

postgresql contrib module 002

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

postgresql contrib module 003

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
タイトルとURLをコピーしました