postgresql.confファイルを編集し、VCIに必要なパラメータを設定します。postgresql.confファイルの編集後は、インスタンスを起動、または再起動してください。
事前に設定が必要、または推奨するパラメータについて示します。
パラメータ名 | 設定値 | 説明 | パラメータの省略 |
---|---|---|---|
shared_preload_libraries | vci, pg_prewarm | VCI、および事前ロード機能の共用ライブラリ名を指定します。 | 省略不可 |
session_preload_libraries | vci, pg_prewarm | VCI、および事前ロード機能の共用ライブラリ名を指定します。 | 省略不可 |
reserve_buffer_ratio | ステーブルバッファテーブルに使用する共用メモリの割合(%) | 共用メモリのうち、ステーブルバッファテーブルに使用する割合を、パーセンテージの値で指定します。 | 省略可 |
vci.control_max_workers | VCIを管理するバックグラウンドワーカーの数 | VCIを管理するバックグラウンドワーカー数を指定します。 この値を max_worker_processesに加える必要があります。 | 省略可 |
vci.max_parallel_degree | 並列検索で使用するバックグラウンドワーカーの最大数 | 並列検索で使用するバックグラウンドワーカーの最大数を指定します。 この値を max_worker_processesに加える必要があります。 | 省略可 |
例
shared_preload_libraries = ‘vci, pg_prewarm’ session_preload_libraries = ‘vci, pg_prewarm’ reserve_buffer_ratio = 20 vci.control_max_workers = 8 vci.max_parallel_degree = 4 max_worker_processes = 18 # 例. 元が6であった場合、6 + 8 + 4 = 18
参照
VCI用の全パラメータについては、“付録A パラメータ”を参照してください。また、各パラメータのデフォルト値、および指定範囲などの詳細についても同様に参照してください。ただし、“shared_preload_libraries”、“session_preload_libraries”、“max_worker_processes”の詳細は、“PostgreSQL文書”の“サーバの管理”の“サーバの設定”を参照してください。
VCIを使用する場合、procfsがマウントされていない状態でインスタンスの起動を行うと、エラーが発生します。インスタンスの起動時は、事前にprocfsのマウント状態を確認してください。
CREATE EXTENSION文を実行し、VCIとpg_prewarmの拡張をインストールします。拡張のインストールはデータベース単位に必要です。
VCIのインストール
db01=# CREATE EXTENSION vci;
pg_prewarmのインストール
db01=# CREATE EXTENSION pg_prewarm;
注意
VCIの拡張インストールは、スーパーユーザーのみ実行可能です。
VCIの拡張インストールは、publicスキーマに対してのみ実行可能です。
VCIの拡張に対して実行できない操作があります。詳細は、“9.2.1 VCIに対して利用できないコマンド”を参照してください。
CREATE INDEXのUSING句に“vci”を指定して実行し、対象となる列にVCIを作成します。また、WITH句のstable_bufferパラメータに“true”を指定し、ステーブルバッファ機能を有効にします。
VCI用にディスクを分ける場合は、TABLESPACE句に適切なテーブルスペースを指定してください。
db01=# CREATE INDEX idx_vci ON table01 USING vci (col01, col02) WITH (stable_buffer=true);
注意
CREATE INDEXのON句に指定できないテーブル種別があります。詳細は、“9.1.4.1 リレーション種別”を参照してください。
CREATE INDEXの列指定に指定できないデータ型があります。詳細は、“9.1.4.2 データ型”を参照してください。
VCIに対して、実行できない操作があります。詳細は、“9.2.1 VCIに対して利用できないコマンド”を参照してください。
CREATE INDEXの列指定に、同じ列を複数指定することはできません。
テンプレートデータベースに属するテーブルの列に対して、VCIを作成することはできません。
CREATE INDEXを実行すると、VCIの他に、“vci_{10桁のリレーションOID}_{5桁のリレーション属性}_{リレーション種別を示す1桁の数値、または文字}”という名前で、複数のビューが作成されます。これらのビューを、VCI内部リレーションといいます。VCI内部リレーションはVCIの集計処理で使用する資源のため、更新、削除は行わないでください。
VCIの作成では、指定した列のすべてのデータを列形式に置き換えるため、データが挿入された既存テーブルに対してCREATE INDEXを実行する場合は、一般的なインデックス(B-tree)に比べ時間を要します。ただし、CREATE INDEX中の業務の継続は可能です。
SELECT文の実行によりpg_indexesカタログを参照し、対象となる列にVCIが作成されていることを確認します。
例
db01=# SELECT indexdef FROM pg_indexes WHERE indexdef LIKE '%vci%'; indexdef ---------------------------------------------------------- CREATE INDEX idx_vci ON table01 USING vci (col01, col02) (1 row)