5 クライアントアプリケーション(解説)
完了要件
この章では、PostgreSQLのクライアントアプリケーションとそれらに関連するSQL文について解説します。
5.1 対話型ターミナル
5.2 ユーザの管理
5.3 データベースの作成
5.4 データベースのバックアップ
5.5 バキューム処理
5.5 バキューム処理
PostgresSQLは、表のデータを更新したときに元のデータを直接書き換えるのではなく、新たなデータを追加する追記型アーキテクチャを採用しています。そのため、データの更新と削除が繰り返されると表の中の空き領域が増加して性能が低下します。バキューム処理は、この空き領域を回収して再利用可能にします。この処理は自動で行われますが、手動で行うこともできます。
vacuumdbコマンド
vacuumdbは、PostgreSQLデータベースの不要領域のクリーンアップを行うとともに、問い合わせオプティマイザが使用する内部的な統計情報も生成します。形式は以下の通りです。
vacuumdb [オプション] [データベース名]
- データベース名は、バキュームするデータベースの名前です。省略時は、接続しているユーザ名になります。
- オプションは、サーバへの接続情報とバキューム方法に関するオプションです。主なものを以下に示すます。
オプション | 省略値 | 説明 |
---|---|---|
--host= (-h) | Unixドメインソケット | サーバを実行しているマシンのホスト名 またはUnixドメインソケットのディレクトリ |
--port= (-p) | 5432 | サーバが接続監視を行っているTCPポート |
--username= (-U) | OSのユーザ名 | 接続するユーザの名前 |
--all (-a) | バキュームの対象はすべてのデータベース | |
--dbname= (-d) | バキュームするデータベースの名前 | |
--full (-f) | 行の物理的な移動を伴う完全なバキュームを実行 | |
--table= (-t) | すべての表 | バキュームする表の名前、複数指定が可能 |
--analyze (-z) | オプティマイザが使用する統計情報も生成 | |
--verbose (-v) | 処理中に詳細な情報を表示 | |
--version (-V) | vacuumdbのバージョンを表示して終了 | |
--help (-?) | vacuumdbに関するヘルプを表示して終了 |
例えば、ossdbデータベースのバキュームを行う場合は、以下のように指定します。
vacuumdb --analyze ossdb
データベースのバキュームとオプティマイザ用の解析の両方が行われます。
VACUUM文
VACUUM文は、vacuumdbコマンドとほぼ同じ機能を持つSQL文です。形式は以下の通りです。
VACUUM [(オプション [, ...])] [表名 [, ...]]
- 表名は、バキュームする表の名前です。省略時はすべての表がバキュームされます。
- オプションは複数指定でき、以下のものがあります。
FULL --- 完全なバキュームを実行
ANALYZE --- オプティマイザが使用する統計情報も生成
VERBOSE --- 処理中に詳細な情報を表示
以下は、バキュームする表を指定したVACUUM文の例です。
VACUUM (ANALYZE, VERBOSE) prod, orders;
上記は、prod表とorders表をバキュームします。
ANALYZE文
ANALYZE文は、データベース内の表に関する統計情報を収集します。形式は以下の通りです。
ANALYZE [(オプション [, ...])] [表名]
- 表名は、統計情報を収集する表の名前です。省略時はすべての表から収集されます。
- オプションは複数指定でき、以下のものがあります。
VERBOSE --- 処理中に詳細な情報を表示
SKIP_LOCKED --- ロックされた表をスキップ