はじめに

データベースのデータ量が増えてきた場合に、ライセンスサイズの上限に抵触しないように、各テーブルのサイズ(非圧縮)を確認して、サイズの大きいテーブルを削除することがあります。

本記事では各テーブルのサイズ(非圧縮)を一覧で表示する方法を紹介します。

各テーブルのサイズ(非圧縮)を一覧で表示する方法

AUDIT関数とUSER_AUDITSシステムテーブルを利用することで、各テーブルのサイズ(非圧縮)を確認することができます。AUDIT関数とUSER_AUDITSシステムテーブルの使用方法は、以下をご覧ください。

AUDIT関数

パラメータ意味
[database.]schema
スキーマを指定します(デフォルトは public スキーマ)。
public スキーマ以外の監査を行う場合はスキーマ名を指定する必要があります。

myschema スキーマの監査を行う例:

myschema.thisDbObject

データベースを指定する場合は、それが現在のデータベースである必要があります。
scope
監査の範囲を指定します。

・空の文字列('')は、データベース全体を監査します。
・監査するスキーマまたはテーブルを指定する場合は、その名前を指定します。
granularity
次の文字列のいずれかで監査を行うレベルを指定します。

・database
・schema
・table

granularity のレベルは、scope の粒度以下である必要があります。
このパラメータを省略すると、granularity は scope と同じレベルに設定されます。
したがって、online_sales がスキーマの場合、次は同じ内容を指します。

AUDIT( 'online_sales'、 'schema');
AUDIT( 'online_sales');

対象オブジェクトより低い粒度を指定した場合、エラーメッセージが返されます。
error‑tolerance
監査見積もりで許可される許容誤差のパーセンテージを指定します。
許容値を0〜100の10進数で入力します。デフォルト値は5で、5%の許容誤差があります。

この引数は、ORCまたはParquetファイルに基づく外部テーブルの監査には影響しません。
これらのテーブルの監査では、常に基になるデータファイルの実際のサイズが返されます。

この値を0に設定すると、データベース全体の監査が行われます。そのため、監査時に
非常に大きくリソースを消費します。

完全なデータベース監査はパフォーマンスに大きな影響を与えるため、本番機の場合に
0を指定することはメーカに推奨されていません。

注意事項:
監査プロセスが使用する反復サンプリングのため、エラー許容値をわずかな割合(たとえば、0.00001)に設定すると、完全なデータベース監査よりも長期間実行される可能性があります。
この値を低く指定するほど、監査がより多くのデータサンプリングを実行するため、より多くのリソースが使用されます。
confidence‑level
推定値の統計的信頼水準のパーセンテージを指定します。信頼値を0〜100の10進数で入力します。
デフォルト値は99で、99%の信頼レベルを示します。

この引数は、ORCまたはParquetファイルに基づく外部テーブルの監査には影響しません。
これらのテーブルの監査では、常に基になるデータファイルの実際のサイズが返されます。

信頼値が高いほど、より多くのデータサンプリングを実行するため、監査が多くのリソースを
使用します。この値を100に設定すると、データベースが完全に監査されます。これは、
関数がすべてのデータベースを分析するため、非常にリソースを消費します。

完全なデータベース監査はパフォーマンスに大きな影響を与えるため、本番機の場合に
100を指定することはメーカに推奨されていません。


USER_AUDITSシステムテーブル

項目説明
SIZE_BYTESデータベースの推定生データサイズ
USER_ID監査を生成したユーザーのID
USER_NAME監査を生成したユーザーの名前
OBJECT_ID監査対象のオブジェクトのID
OBJECT_TYPE監査対象のオブジェクトのタイプ(テーブル、スキーマなど)
OBJECT_SCHEMA監査対象のオブジェクトを含むスキーマ
OBJECT_NAME監査対象のオブジェクトの名前
AUDITED_SCHEMA_NAME過去データを照会するスキーマの名前。

テーブルに対して監査を実行した後、テーブルを削除できます。この場合、object_schemaはNULLになります。
AUDITED_OBJECT_NAME過去データを照会するオブジェクトの名前。

テーブルに対して監査を実行した後、テーブルを削除できます。この場合、object_nameはNULLになります。
LICENSE_NAMEライセンスの名前。コンプライアンス監査を実行した後、この列の値は常にverticaです。
AUDIT_START_TIMESTAMP監査開始時のタイムスタンプ
AUDIT_END_TIMESTAMP監査終了時のタイムスタンプ
CONFIDENCE_LEVEL_PERCENTサイズ見積もりの​​信頼水準
ERROR_TOLERANCE_PERCENTサイズ見積もりに使用される許容誤差
USED_SAMPLINGデータがランダムにサンプリングされたかどうか(falseの場合、すべてのデータが分析されました)
CONFIDENCE_INTERVAL_LOWER_BOUND_BYTES信頼水準内のデータサイズ推定値の下限
CONFIDENCE_INTERVAL_UPPER_BOUND_BYTES信頼水準内のデータサイズ推定値の上限
SAMPLE_COUNT推定値の生成に使用されたデータサンプルの数
CELL_COUNTデータベース内のセルの数

実行例

以下はデータベース上で作成されたすべてのテーブルで監査を実施し、それらのテーブルサイズを確認する実行例です。

参考情報

データサイズの確認方法
http://vertica-tech.ashisuto.co.jp/datasize_check/

ライセンスの確認方法
http://vertica-tech.ashisuto.co.jp/license_check/

ライセンスで許容されているデータ量と現在のデータ量の確認
http://vertica-tech.ashisuto.co.jp/license_check2/

Management Consoleでライセンスの利用状況を確認する方法
http://vertica-tech.ashisuto.co.jp/mc_license_check/

AUDIT
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/LicenseManagement/AUDIT.htm

USER_AUDITS
https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/SQLReferenceManual/SystemTables/CATALOG/USER_AUDITS.htm

検証バージョンについて

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

更新履歴

2021/05/18 本記事を公開