はじめに
Verticaはデータ・ロード後は、圧縮された状態でデータを格納しますが、圧縮されたサイズだけでなく、非圧縮状態のサイズを確認したいケースもあります。本記事では、システムテーブルのprojection_storageやdisk_storage、AUDIT関数を使った確認方法をご紹介します。
データベース全体のサイズ(圧縮済み)
データベース全体のサイズを確認するために、以下のクエリを使います。
この結果では、各ノードのデータ領域とカタログ領域のサイズが確認できます。ファイルシステム上のサイズを返しますので、カタログ領域やデータ領域にデータベース以外のファイルを保存している場合は、それらのサイズも含まれる点に注意が必要です。
SELECT
node_name,
storage_path,
storage_usage,
disk_space_used_mb / 1024 as disk_space_used_gb,
disk_space_free_mb / 1024 as disk_space_free_gb,
disk_space_free_percent
FROM
disk_storage
;
node_name | storage_path | storage_usage | disk_space_used_gb | disk_space_free_gb | disk_space_free_percent
-----------------+------------------------------------------------------------+---------------+------------------------+------------------------+-------------------------
v_ssbm_node0001 | /home/dbadmin/catalog/ssbm/v_ssbm_node0001_catalog/Catalog | CATALOG | 571.363281250000000000 | 226.981445312500000000 | 28%
v_ssbm_node0001 | /data/ssbm/v_ssbm_node0001_data | DATA,TEMP | 571.363281250000000000 | 226.981445312500000000 | 28%
v_ssbm_node0002 | /home/dbadmin/catalog/ssbm/v_ssbm_node0002_catalog/Catalog | CATALOG | 479.168945312500000000 | 312.660156250000000000 | 39%
v_ssbm_node0002 | /data/ssbm/v_ssbm_node0002_data | DATA,TEMP | 479.168945312500000000 | 312.660156250000000000 | 39%
v_ssbm_node0003 | /home/dbadmin/catalog/ssbm/v_ssbm_node0003_catalog/Catalog | CATALOG | 227.467773437500000000 | 564.361328125000000000 | 71%
v_ssbm_node0003 | /data/ssbm/v_ssbm_node0003_data | DATA,TEMP | 227.467773437500000000 | 564.361328125000000000 | 71%
(6 rows)データベース全体のサイズ(非圧縮)
実際に格納されたデータサイズ(非圧縮)については、実測値ではなくサンプルデータから算出した近似値を確認することができます。AUDIT関数の第一引数を”(空白)にすることで、データベース全体の非圧縮サイズを確認することができます。
SELECT AUDIT('');
AUDIT
--------------
198905727742
(1 row)関連情報
ライセンスで許容されているデータ量と現在のデータ量の確認
テーブルのサイズ(圧縮済み)
実際に格納されたデータサイズ(圧縮済み)のテーブルサイズを確認する方法です。
このクエリでは、各テーブルデータの圧縮されたサイズを確認することができます。また、1つのテーブルに複数のプロジェクションが存在する場合、複数のプロジェクションの合計サイズが含まれます。例えば、クエリスペシフィックプロジェクションを追加すると、スーパープロジェクションとクエリスペシフィックプロジェクションの両方のサイズの合計値が算出されます。
SELECT anchor_table_schema,
anchor_table_name,
SUM(used_bytes) / ( 1024^3 ) AS used_compressed_gb
FROM v_monitor.projection_storage
GROUP BY anchor_table_schema,
anchor_table_name
ORDER BY SUM(used_bytes) DESC;
anchor_table_schema | anchor_table_name | used_compressed_gb
---------------------+-------------------+----------------------
public | lineorder | 3.542380457744
public | customer | 0.031043347902596
public | part | 0.0279258582741022
public | supplier | 0.00211881380528212
public | date1 | 6.86701387166977e-05
public | t1 | 9.49949026107788e-08
public | date2 | 0
(7 rows)テーブルのサイズ(非圧縮)
実際に格納されたデータサイズ(非圧縮)については、実測値ではなくサンプルデータから算出した近似値を確認することができます。AUDIT関数の第一引数をに「スキーマ名.テーブル名」を指定することで、指定したテーブルの非圧縮サイズを確認することができます。
SELECT AUDIT('public.LINEORDER');
AUDIT
-----------
812352000
(1 row)プロジェクションのサイズ(圧縮済み)
各プロジェクションのサイズを確認するには、以下のクエリを使います。
SELECT
node_name,
projection_schema,
projection_name,
anchor_table_name,
used_bytes
FROM
v_monitor.projection_storage
ORDER BY
3,
1
;
node_name | projection_schema | projection_name | anchor_table_name | used_bytes
-----------------+-------------------+-------------------------------------------+-------------------+------------
v_ssbm_node0001 | public | customer_DBD_1_rep_test_20190107_2_v1 | customer | 11110847
v_ssbm_node0002 | public | customer_DBD_1_rep_test_20190107_2_v1 | customer | 11110847
v_ssbm_node0003 | public | customer_DBD_1_rep_test_20190107_2_v1 | customer | 11110847
v_ssbm_node0001 | public | date1_DBD_3_rep_test_20190225 | date1 | 237
v_ssbm_node0002 | public | date1_DBD_3_rep_test_20190225 | date1 | 237
v_ssbm_node0003 | public | date1_DBD_3_rep_test_20190225 | date1 | 237
v_ssbm_node0001 | public | date1_DBD_5_rep_test_20190107_2_v1 | date1 | 24341
v_ssbm_node0002 | public | date1_DBD_5_rep_test_20190107_2_v1 | date1 | 24341
v_ssbm_node0003 | public | date1_DBD_5_rep_test_20190107_2_v1 | date1 | 24341
v_ssbm_node0001 | public | date2_b0 | date2 | 0
v_ssbm_node0002 | public | date2_b0 | date2 | 0
v_ssbm_node0003 | public | date2_b0 | date2 | 0
v_ssbm_node0001 | public | date2_b1 | date2 | 0
v_ssbm_node0002 | public | date2_b1 | date2 | 0
v_ssbm_node0003 | public | date2_b1 | date2 | 0
v_ssbm_node0001 | public | lineorder_DBD_1_seg_test_20190225_b0 | lineorder | 127957537
v_ssbm_node0002 | public | lineorder_DBD_1_seg_test_20190225_b0 | lineorder | 127214159
v_ssbm_node0003 | public | lineorder_DBD_1_seg_test_20190225_b0 | lineorder | 127955365
v_ssbm_node0001 | public | lineorder_DBD_1_seg_test_20190225_b1 | lineorder | 127955365
v_ssbm_node0002 | public | lineorder_DBD_1_seg_test_20190225_b1 | lineorder | 127957537
v_ssbm_node0003 | public | lineorder_DBD_1_seg_test_20190225_b1 | lineorder | 127214159
v_ssbm_node0001 | public | lineorder_DBD_2_seg_test_20190107_2_v1_b0 | lineorder | 506329420
v_ssbm_node0002 | public | lineorder_DBD_2_seg_test_20190107_2_v1_b0 | lineorder | 506326834
v_ssbm_node0003 | public | lineorder_DBD_2_seg_test_20190107_2_v1_b0 | lineorder | 506017712
v_ssbm_node0001 | public | lineorder_DBD_2_seg_test_20190107_2_v1_b1 | lineorder | 506017712
v_ssbm_node0002 | public | lineorder_DBD_2_seg_test_20190107_2_v1_b1 | lineorder | 506329420
v_ssbm_node0003 | public | lineorder_DBD_2_seg_test_20190107_2_v1_b1 | lineorder | 506326834
v_ssbm_node0001 | public | part_DBD_3_seg_test_20190107_2_v1_b0 | part | 4998844
v_ssbm_node0002 | public | part_DBD_3_seg_test_20190107_2_v1_b0 | part | 4998215
v_ssbm_node0003 | public | part_DBD_3_seg_test_20190107_2_v1_b0 | part | 4995522
v_ssbm_node0001 | public | part_DBD_3_seg_test_20190107_2_v1_b1 | part | 4995522
v_ssbm_node0002 | public | part_DBD_3_seg_test_20190107_2_v1_b1 | part | 4998844
v_ssbm_node0003 | public | part_DBD_3_seg_test_20190107_2_v1_b1 | part | 4998215
v_ssbm_node0001 | public | supplier_DBD_2_rep_test_20190225 | supplier | 43303
v_ssbm_node0002 | public | supplier_DBD_2_rep_test_20190225 | supplier | 43303
v_ssbm_node0003 | public | supplier_DBD_2_rep_test_20190225 | supplier | 43303
v_ssbm_node0001 | public | supplier_DBD_4_rep_test_20190107_2_v1 | supplier | 715050
v_ssbm_node0002 | public | supplier_DBD_4_rep_test_20190107_2_v1 | supplier | 715050
v_ssbm_node0003 | public | supplier_DBD_4_rep_test_20190107_2_v1 | supplier | 715050
v_ssbm_node0001 | public | t1_DBD_6_seg_test_20190107_2_b0 | t1 | 0
v_ssbm_node0002 | public | t1_DBD_6_seg_test_20190107_2_b0 | t1 | 51
v_ssbm_node0003 | public | t1_DBD_6_seg_test_20190107_2_b0 | t1 | 0
v_ssbm_node0001 | public | t1_DBD_6_seg_test_20190107_2_b1 | t1 | 0
v_ssbm_node0002 | public | t1_DBD_6_seg_test_20190107_2_b1 | t1 | 0
v_ssbm_node0003 | public | t1_DBD_6_seg_test_20190107_2_b1 | t1 | 51
(45 rows)ノード別のサイズ(圧縮済み)
各ノードのデータサイズを確認するには、以下のクエリを使います。
SELECT
node_name,
SUM(used_bytes)/(1024^3) AS used_compressed_gb
FROM
v_monitor.projection_storage
GROUP BY
node_name
ORDER BY node_name
;
node_name | used_compressed_gb
-----------------+--------------------
v_ssbm_node0001 | 1.20154412277043
v_ssbm_node0002 | 1.20114426873624
v_ssbm_node0003 | 1.20084885135293
(3 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参考情報
PROJECTION_STORAGE
https://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/SQLReferenceManual/SystemTables/MONITOR/PROJECTION_STORAGE.htm
検証バージョンについて
この記事の内容はVertica 11.0で確認しています。
更新履歴
2022/04/22 バージョン11.0用に改訂、全体的に体裁を修正、注意事項、参考情報の項目を追加
2021/05/25 「テーブルのサイズ(非圧縮)」の関連情報を追加
2019/03/08 本記事を公開