OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

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

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

はじめに

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

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

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

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

AUDIT関数

AUDIT('[[[database.]schema.]scope ]'[, 'granularity']
 [, error‑tolerance[, confidence‑level]] )

パラメータ

意味

[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ファイルに基づく外部テーブルの監査には影響しません。
これらのテーブルの監査では、常に基になるデータファイルの実際のサイズが返されます。

confidence‑level

推定値の統計的信頼水準のパーセンテージを指定します。信頼値を0〜100の10進数で入力します。デフォルト値は99で、99%の信頼レベルを示します。

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

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

データベース内のセルの数

実行例

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

#テーブルの一覧表示
dbadmin=> \d
                 List of tables
 Schema |   Name    | Kind  |  Owner  | Comment
--------+-----------+-------+---------+---------
 public | CUSTOMER  | table | dbadmin |
 public | DATE1     | table | dbadmin |
 public | LINEORDER | table | dbadmin |
 public | PART      | table | dbadmin |
 public | SUPPLIER  | table | dbadmin |
(5 rows)

#各テーブルの監査実施
dbadmin=>  SELECT AUDIT('CUSTOMER');
   audit
-----------
 327615000
(1 row)

dbadmin=>  SELECT AUDIT('DATE1');
 audit
--------
 183957
(1 row)

dbadmin=>  SELECT AUDIT('LINEORDER');
    audit
-------------
 65577380577
(1 row)

dbadmin=>  SELECT AUDIT('PART');
   audit
-----------
 106649838
(1 row)

dbadmin=>  SELECT AUDIT('SUPPLIER');
  audit
----------
 19347955
(1 row)

#USER_AUDITS システムテーブルで各テーブルのサイズ(非圧縮)を確認
dbadmin=>  SELECT * FROM USER_AUDITS 
              WHERE OBJECT_TYPE = 'TABLE' 
              ORDER BY SIZE_BYTES DESC;
 size_bytes  |      user_id      | user_name |     object_id     | object_type | object_schema | object_name | audited_schema_name | audited_object_name | license_name |     audit_start_timestamp     |      audit_end_timestamp      | confidence_level_percent | error_tolerance_percent | used_sampling | confidence_interval_lower_bound_bytes | confidence_interval_upper_bound_bytes | sample_count | cell_count
-------------+-------------------+-----------+-------------------+-------------+---------------+-------------+---------------------+---------------------+--------------+-------------------------------+-------------------------------+--------------------------+-------------------------+---------------+---------------------------------------+---------------------------------------+--------------+-------------
 65577380577 | 45035996273704962 | dbadmin   | 45035996273707312 | TABLE       | public        | LINEORDER   | public              | LINEORDER           | vertica      | 2021-05-17 20:06:12.281987+09 | 2021-05-17 20:06:14.077814+09 |                       99 |                       5 | t             |                           64643359727 |                           66511401427 |        10001 | 12750792404
   327615000 | 45035996273704962 | dbadmin   | 45035996273707310 | TABLE       | public        | CUSTOMER    | public              | CUSTOMER            | vertica      | 2021-05-17 20:05:51.762599+09 | 2021-05-17 20:05:52.365303+09 |                       99 |                       5 | t             |                             324153455 |                             331076545 |        10000 |    30000000
   106649838 | 45035996273704962 | dbadmin   | 45035996273707314 | TABLE       | public        | PART        | public              | PART                | vertica      | 2021-05-17 20:06:20.292302+09 | 2021-05-17 20:06:20.340881+09 |                       99 |                       5 | t             |                             105193896 |                             108105780 |        10000 |    12600000
    19347955 | 45035996273704962 | dbadmin   | 45035996273707316 | TABLE       | public        | SUPPLIER    | public              | SUPPLIER            | vertica      | 2021-05-17 20:06:25.917143+09 | 2021-05-17 20:06:26.003118+09 |                       99 |                       5 | t             |                              19137212 |                              19558698 |        10000 |     1750000
      183957 | 45035996273704962 | dbadmin   | 45035996273707318 | TABLE       | public        | DATE1       | public              | DATE1               | vertica      | 2021-05-17 20:06:06.051971+09 | 2021-05-17 20:06:06.065565+09 |                       99 |                       5 | f             |                                183957 |                                183957 |            0 |           0
(5 rows) 

注意事項

許容誤差率と信頼値の指定

AUDIT関数の引数に、以下のように許容誤差率(error‑tolerance)を0%、信頼値(confidence‑level)を100%とすると、精度の高いサイズを確認することができます。しかし、マシンリソースを大量に消費するため、本番環境での実行は推奨していません。

SELECT AUDIT('',0,100);

各ノードのステータス

AUDIT関数を実行する時は、複数ノード構成の場合は全ノードが起動している必要があります。いずれかのノードが停止している場合は、エラーが発生します。スクリプト等で定期的に実行している場合は、ご注意ください。

dbadmin=> SELECT AUDIT('public.CUSTOMER');
ERROR 4539:  Received no response from v_testdb_node0003 in get node cell counts

参考情報

データサイズの確認方法
https://www.ashisuto.co.jp/cm/analytics-database/datasize_check.html

ライセンスの確認方法
https://www.ashisuto.co.jp/cm/analytics-database/license_check.html

ライセンスで許容されているデータ量と現在のデータ量の確認
https://www.ashisuto.co.jp/cm/analytics-database/license_check2.html

Management Consoleでライセンスの利用状況を確認する方法
https://www.ashisuto.co.jp/cm/analytics-database/mc_license_check.html

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

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

検証バージョンについて

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

更新履歴

2022/04/22 バージョン11.0用に改訂、注意事項の項目を追加
2021/05/18 本記事を公開