今日はcontribモジュールの使い方についてです。
■contribモジュールとは
PostgreSQLには「contrib」と呼ばれるモジュールがあります。
これは、PostgreSQLのソースコードと一緒に配布されているものの、明示的にコンパイルしてインストールしないとデフォルトではインストールされないという、PostgreSQL周辺の拡張モジュールや便利ツールです。
以下のような感じで、ソースディレクトリの中のcontribというディレクトリ内にいろいろと並んでいます。
[snaga@devsv02 postgresql-9.0.8]$ ls aclocal.m4 config.status* contrib/ GNUmakefile INSTALL src/ config/ configure* COPYRIGHT GNUmakefile.in Makefile config.log configure.in doc/ HISTORY README [snaga@devsv02 postgresql-9.0.8]$ cd contrib/ [snaga@devsv02 contrib]$ ls adminpack/ fuzzystrmatch/ pgbench/ seg/ auto_explain/ hstore/ pg_buffercache/ spi/ btree_gin/ intagg/ pgcrypto/ sslinfo/ btree_gist/ intarray/ pg_freespacemap/ start-scripts/ chkpass/ isn/ pgrowlocks/ tablefunc/ citext/ lo/ pg_standby/ test_parser/ contrib-global.mk ltree/ pg_stat_statements/ tsearch2/ cube/ Makefile pgstattuple/ unaccent/ dblink/ oid2name/ pg_trgm/ uuid-ossp/ dict_int/ pageinspect/ pg_upgrade/ vacuumlo/ dict_xsyn/ passwordcheck/ pg_upgrade_support/ xml2/ earthdistance/ pg_archivecleanup/ README [snaga@devsv02 contrib]$この一覧はオフィシャルマニュアルでは「付録 F. 追加で提供されるモジュール」に記載されています。 このcontribのモジュールを使いこなせるかどうかで、PostgreSQLの便利度は大きく変わってきますので、今回はこのcontribモジュールの使い方を解説します。
なお、最近はソースからコンパイルしてインストールすることは少なくなったと思いますが、RPMからのインストールだと postgresql-contrib というパッケージになっていると思いますので、まずはこれをインストールしておきます。
-bash-3.2$ rpm -qa | grep postgresql90 postgresql90-devel-9.0.10-1PGDG.rhel5 postgresql90-libs-9.0.10-1PGDG.rhel5 postgresql90-server-9.0.10-1PGDG.rhel5 postgresql90-9.0.10-1PGDG.rhel5 postgresql90-contrib-9.0.10-1PGDG.rhel5 -bash-3.2$
■contribモジュールの種類
contribモジュールの中にもいくつか種類があります。
(1) OSコマンドとしてインストールするもの
(2) 各データベースへセットアップ(新規のSQL関数やデータ型の登録)して使うもの
(3) 上記のコンビネーション
などなどです。
今回は(2)について「pgstattuple」と呼ばれるcontribモジュールを題材として解説します。pgstattupleモジュールそのものについては、以下を参照してください。
http://www.postgresql.jp/document/9.0/html/pgstattuple.html
■9.0以前と9.1以降の違いについて
PostgreSQLでは、バージョン9.1で「EXTENSION」と呼ばれる「追加モジュールの管理を容易にする仕組み」が導入されました。
そのため、同じcontribモジュールでもインストール(登録)の方法が9.0以前と9.1以後で変わってきます。
今回は、9.0以前と9.1以降に分けてインストール方法を解説します。
■9.0以前のインストール方法
9.0以前の場合、セットアップ用のSQLスクリプトが準備されていますので、それを使ってデータベースへの登録(SQL関数やデータ型など)を行うことになります。
contribモジュールのセットアップ用のSQLスクリプトは /usr/pgsql-9.0/share/contrib/ ディレクトリに配置されています。ですので、ここに置かれているスクリプトを、自分の利用するデータベースに対して実行して、セットアップを行うことになります。
例えば、データベース名が testdb というデータベース上で pgstattuple モジュールを使いたい場合には、コマンドラインで以下のように実行します。
-bash-3.2$ psql -f /usr/pgsql-9.0/share/contrib/pgstattuple.sql testdb SET CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION CREATE FUNCTION -bash-3.2$こうすることによって、pgstattupleモジュールに含まれるSQL関数を新規に使えるようになります。
-bash-3.2$ psql testdb psql (9.0.10) Type "help" for help. testdb=# \x Expanded display is on. testdb=# SELECT * FROM pgstattuple('pg_database'); -[ RECORD 1 ]------+------ table_len | 8192 tuple_count | 5 tuple_len | 1350 tuple_percent | 16.48 dead_tuple_count | 2 dead_tuple_len | 504 dead_tuple_percent | 6.15 free_space | 6248 free_percent | 76.27 testdb=#逆に、アンインストールするには以下のように実行します。
-bash-3.2$ psql -f /usr/pgsql-9.0/share/contrib/uninstall_pgstattuple.sql testdb SET DROP FUNCTION DROP FUNCTION DROP FUNCTION DROP FUNCTION $
■9.1以降のインストール方法
PostgreSQLのバージョン9.1でEXTENSION機能が導入されましたので、9.1以降の場合にはSQLのCREATE EXTENSIONコマンドを使ってインストールします。
testdb=# \x Expanded display is on. testdb=# CREATE EXTENSION pgstattuple; CREATE EXTENSION testdb=# SELECT * FROM pgstattuple('pg_database'); -[ RECORD 1 ]------+------ table_len | 16384 tuple_count | 32 tuple_len | 8154 tuple_percent | 49.77 dead_tuple_count | 5 dead_tuple_len | 1260 dead_tuple_percent | 7.69 free_space | 6520 free_percent | 39.79 testdb=#逆にアンインストールする場合にはDROP EXTENSIONコマンドを使います。
testdb=# DROP EXTENSION pgstattuple; DROP EXTENSION testdb=#
■まとめ
PostgreSQLでは、「contribモジュール」と呼ばれるアドオンモジュールが多数提供されており、これを使いこなせるかどうかでPostgreSQLの運用管理における便利さが大きく変わってきます。
というわけで、今回はそのcontribモジュールの一つであるpgstattupleモジュールについて、バージョン9.0以前の場合とバージョン9.1以降の場合について、それぞれインストールの方法を解説しました。
明日以降のエントリでcontribモジュールを使う場合がありますが、その際にはこのエントリでインストール方法、使い方を確認していただければと思います。
では、また明日。
0 件のコメント:
コメントを投稿