OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

テーブルの使用ディスクサイズを制限する方法(Vertica12.0 新機能)

公開日:
更新日:
基本操作
#テーブル

はじめに

テーブルとスキーマの使用するディスクサイズは、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 が発生しています。

dbadmin=> CREATE TABLE stats(score int) DISK_QUOTA '1k';
CREATE TABLE

dbadmin=> copy stats from '/tmp/test.csv';
ERROR 10765:  Disk Quota Exceeded for the Table object public.stats
HINT:  Delete data and PURGE or increase disk quota at the table level

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

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

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

モニタリング方法

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

dbadmin=> SELECT * FROM DISK_QUOTA_USAGES; 
    object_oid     | object_name | is_schema | total_disk_usage_in_bytes | disk_quota_in_bytes
-------------------+-------------+-----------+---------------------+---------------------
 45035996273705100 | s           | t         |                 307 |               10240
 45035996273705104 | public.t    | f         |                 614 |                1024
 45035996273705108 | s.t         | f         |                 307 |                2048
(3 rows)

[DISK_QUOTA_USAGES]

カラム名

説明

OBJECT_OID

スキーマ または テーブル における一意の識別子

OBJECT_NAME

スキーマ または テーブルの名前。テーブル名には、スキーマ名の接頭辞が含まれる。

IS_SCHEMA

対象オブジェクトが、スキーマかどうかの判定用フラグ。false の場合、オブジェクトはテーブルを示す。

TOTAL_DISK_USAGE_IN_BYTES

対象オブジェクトが、使用しているディスクサイズ

DISK_QUOTA_IN_BYTES

対象オブジェクトに設定された、使用可能なディスクサイズの上限値

注意事項

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

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

//public.stats テーブルの total_disk_usage_in_bytes = 947 バイトです。
dbadmin=> SELECT * FROM DISK_QUOTA_USAGES;
    object_oid     | object_name  | is_schema | total_disk_usage_in_bytes | disk_quota_in_bytes
-------------------+--------------+-----------+---------------------------+---------------------
 45035996273707456 | public.stats | f         |                       947 |                1024
(1 row)


//public.stats テーブルのデータを DELETE します。
dbadmin=> delete  from public.stats;
 OUTPUT
--------
     29
(1 row)

dbadmin=> commit;
COMMIT


//public.stats テーブルの total_disk_usage_in_bytes = 947 バイトで変わりません。
testdb=> SELECT * FROM DISK_QUOTA_USAGES;
    object_oid     | object_name  | is_schema | total_disk_usage_in_bytes | disk_quota_in_bytes
-------------------+--------------+-----------+---------------------------+---------------------
 45035996273707456 | public.stats | f         |                       947 |                1024
(1 row)


//Purge 処理を実行します。
dbadmin=>  SELECT MAKE_AHM_NOW();
        MAKE_AHM_NOW
-----------------------------
 AHM set (New AHM Epoch: 22)
(1 row)


dbadmin=> SELECT PURGE_TABLE('public.stats');
                                  PURGE_TABLE
-------------------------------------------------------------------------------
 Task: purge operation
(Table: public.stats) (Projection: public.stats_super)

(1 row)


//public.stats テーブルの total_disk_usage_in_bytes = 0 バイトに減りました。
testdb=> SELECT * FROM DISK_QUOTA_USAGES;
    object_oid     | object_name  | is_schema | total_disk_usage_in_bytes | disk_quota_in_bytes
-------------------+--------------+-----------+---------------------------+---------------------
 45035996273707456 | public.stats | f         |                         0 |                1024
(1 row)

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

DELETEの注意点(1)
https://www.ashisuto.co.jp/cm/analytics-database/delete-notice-1.html

参考情報

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 本記事を公開