はじめに
データベースのデータ量が増えてきた場合に、ライセンスサイズの上限に抵触しないように、各テーブルのサイズ(非圧縮)を確認して、サイズの大きいテーブルを削除することがあります。
本記事では各テーブルのサイズ(非圧縮)を一覧で表示する方法を紹介します。
各テーブルのサイズ(非圧縮)を一覧で表示する方法
AUDIT関数とUSER_AUDITSシステムテーブルを利用することで、各テーブルのサイズ(非圧縮)を確認することができます。AUDIT関数とUSER_AUDITSシステムテーブルの使用方法は、以下をご覧ください。
AUDIT関数
AUDIT('[[[database.]schema.]scope ]'[, 'granularity']
[, error‑tolerance[, confidence‑level]] )パラメータ | 意味 |
|---|---|
[database.]schema | スキーマを指定します(デフォルトは public スキーマ)。 |
scope | 監査の範囲を指定します。 |
granularity | 次の文字列のいずれかで監査を行うレベルを指定します。 |
error‑tolerance | 監査見積もりで許可される許容誤差のパーセンテージを指定します。 |
confidence‑level | 推定値の統計的信頼水準のパーセンテージを指定します。信頼値を0〜100の10進数で入力します。デフォルト値は99で、99%の信頼レベルを示します。 |
USER_AUDITSシステムテーブル
項目 | 説明 |
|---|---|
SIZE_BYTES | データベースの推定生データサイズ |
USER_ID | 監査を生成したユーザーのID |
USER_NAME | 監査を生成したユーザーの名前 |
OBJECT_ID | 監査対象のオブジェクトのID |
OBJECT_TYPE | 監査対象のオブジェクトのタイプ(テーブル、スキーマなど) |
OBJECT_SCHEMA | 監査対象のオブジェクトを含むスキーマ |
OBJECT_NAME | 監査対象のオブジェクトの名前 |
AUDITED_SCHEMA_NAME | 過去データを照会するスキーマの名前。 |
AUDITED_OBJECT_NAME | 過去データを照会するオブジェクトの名前。 |
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
検証バージョンについて
この記事の内容はVertica 11.0で確認しています。
更新履歴
2022/04/22 バージョン11.0用に改訂、注意事項の項目を追加
2021/05/18 本記事を公開