はじめに

テーブルとスキーマの使用するディスクサイズは、Vertica12.0 から指定が可能になりました。ディスクサイズは、Verticaによってデータ圧縮された後のサイズが対象です。この機能を活用することで、マルチテナントとして利用する場合など、各テーブルやスキーマ毎に上限値の指定をおこなって、運用が可能となります。


構文

テーブルやスキーマに、使用するディスクサイズの上限値を設定する場合は、作成時に DISK_QUOTA を指定します。DISK_QUOTA の値は、’15G’ や ‘1T’ などの整数と単位 (K、M、G、T) を組み合わせた文字列を指定します。

CREATE SCHEMA <スキーマ名> DISK_QUOTA ‘値’;
CREATE TABLE <テーブル名> (<カラム名> <データ型>) DISK_QUOTA ‘値’;

実行例

stats テーブルの DISK_QUOTA を 1KB に指定した実行例です。1k を超えたデータをロードしたため、ERROR が発生しています。


上限値をチェックする操作について

テーブルとスキーマで、指定されたディスクサイズの上限値を、チェックする操作は以下のとおりです。

・COPY、INSERT、UPDATE、MERGE の実行時
・ALTER COLUMN の実行時
・REFRESH、START_REFRESH の実行時
・バックアップから、スキーマおよびテーブルのリストア時


モニタリング方法

テーブルとスキーマの指定されたディスクサイズの上限値と、実際に使用されたディスクのサイズは、DISK_QUOTA_USAGES システムテーブルから確認します。


[DISK_QUOTA_USAGES]

カラム名説明
OBJECT_OIDスキーマ または テーブル における一意の識別子
OBJECT_NAMEスキーマ または テーブルの名前。テーブル名には、スキーマ名の接頭辞が含まれる。
IS_SCHEMA対象オブジェクトが、スキーマかどうかの判定用フラグ。false の場合、オブジェクトはテーブルを示す。
TOTAL_DISK_USAGE_IN_BYTES対象オブジェクトが、使用しているディスクサイズ
DISK_QUOTA_IN_BYTES対象オブジェクトに設定された、使用可能なディスクサイズの上限値


注意事項

ディスクサイズの上限値に抵触しそうな場合に、テーブルのデータを DELETE もしく TRUNCATE を実行することで、使用サイズを減らすことができます。

ただし、DELETE の場合は、直ぐに使用領域が解放されません。DELETE されたデータのディスク領域は、Purge することで解放されますので、ご注意ください。



詳細は、以下の記事をご覧になってください。

DELETEの注意点(1)
http://vertica-tech.ashisuto.co.jp/delete-notice-1/

参考情報

Disk Quotas
https://www.vertica.com/docs/12.0.x/HTML/Content/Authoring/AdministratorsGuide/Tables/DiskQuotas.htm

DISK_QUOTA_USAGES
https://www.vertica.com/docs/12.0.x/HTML/Content/Authoring/SQLReferenceManual/SystemTables/MONITOR/DISK_QUOTA_USAGES.htm

検証バージョンについて

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

更新履歴

2022/12/15 本記事を公開