はじめに

Verticaで利用しているデータ領域が不足した場合等、何らかの理由でデータベース作成時に指定したデータ領域とは別にデータの保存先を作成したい場合、ストレージロケーション(STORAGE LOCATION)を作成することで新たなデータファイル保存先として利用することができます。

ストレージロケーション(STORAGE LOCATION)とは

ストレージロケーションとは、データファイルや一時ファイル等の保存先(ノード名、絶対パス)情報を持つオブジェクトです。ストレージロケーションには複数のタイプが用意されており、用途に応じて使い分ける必要があります。

ストレージロケーションのタイプ内容
DATA永続データと一時テーブルの作成先
TEMP一時ファイルの作成先(ソート、結合、グループ化に使用)
DATA,TEMP(デフォルト)DATA、TEMPの作成先
USERスーパーユーザ以外のファイルの読み書きや外部テーブルの作成先
DEPOTEonモードのデポ


データファイルの保存先を追加する方法

ディスク容量が不足した際のディスク追加を例にデータファイルの保存先を追加する手順を記載していきます。追加したディスクをVerticaの新しいDATAストレージロケーションとして認識させ、該当ストレージロケーションへ特定スキーマ全体のデータを移動します。

1.ノードに物理ディスクを追加

物理ディスクをVerticaノードに追加し、対象ディスクをフォーマットします。

2.追加ディスクをマウント

追加ディスクをノードにマウントし、ストレージロケーション用のディレクトリを作成します。
 ※複数ノード構成の場合、各ノードに作成するディレクトリは同一名にすることを推奨します。
 ※複数ノード構成の場合、ノード間で共有のディレクトリをストレージロケーションとすることはできません。

3.ストレージロケーションを作成

ストレージロケーションを作成します。また、作成したロケーションにラベルを付与します。

/home/dbadmin/data2をdata_locというストレージロケーションで作成する例)


4.オブジェクト配置ポリシーを作成

先ほど作成したストレージロケーションへtestスキーマのデータを移動させるため、SET_OBJECT_STORAGE_POLICY関数でオブジェクト配置ポリシーを作成します。
オブジェクト配置ポリシーには、オブジェクトのデータをどのストレージロケーションへ格納するかのポリシーを設定することができます。

SET_OBJECT_STORAGE_POLICY関数の構文
SET_OBJECT_STORAGE_POLICY (
‘[[database.]schema.]object‑name’, ‘location‑label’
[,’key‑min’, ‘key‑max’] [, ‘enforce‑storage‑move’ ] )
パラメータ説明
[database.]schemaスキーマを指定
object‑nameオブジェクトを指定
「データベース」、「スキーマ」、「テーブル」単位で指定可能
location‑labelストレージロケーションのラベルを指定
key‑min
key‑max
パーティションキーの範囲を指定
※object‑nameに「テーブル」を指定する場合のみ有効
enforce‑storage‑moveストレージロケーションへデータを移動するタイミングを指定
alse(デフォルト):すべてのマージアウトタスクが完了後に移動
true:すべてのデータを即時移動

※オブジェクト配置ポリシーを作成する前に、移動先のストレージロケーションに十分な空き容量があるか、
必ず確認してください。オブジェクトのサイズは、 projection_storageシステムテーブルのused_bytes列で確認できます。

testスキーマのデータは全てdata_loc2に保存する場合の例)



5.オブジェクトの移動

オブジェクト配置ポリシーに設定したロケーションへのデータ移動は、Mergeout処理の中で行われます。
Mergeout処理は10分間隔で自動実行されます。
※Mergeoutによるデータ移動は、一度に全てのデータを移動せず、徐々に移動していきます。

スキーマ、ノード毎のサイズを確認する例)


以降は作成したオブジェクト配置ポリシーに従い、データが投入されていきます。
上記例の場合、testスキーマに作成するテーブルおよび投入データは、全てdata_loc2ロケーション
(/home/dbadmin/data2)のディレクトリ配下に格納されます。

参考情報

・Managing Storage Locations
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/AdministratorsGuide/StorageLocations/CreatingAndConfiguringStorageLocations.htm

・Creating Storage Locations
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/AdministratorsGuide/StorageLocations/AddingStorageLocations.htm

・SET_OBJECT_STORAGE_POLICY
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/SET_OBJECT_STORAGE_POLICY.htm

検証バージョン

この記事の内容はVertica 9.3で確認しています。

更新履歴

2020/03/05 本記事を公開