ストレージ使用量は、ApsaraDB for ClickHouseクラスターの毎日のO&Mで監視する必要がある重要な指標です。 不十分なストレージスペースは深刻な結果を引き起こす可能性があります。 たとえば、データをクラスタに書き込んだりバックアップしたりすることができず、記憶容量の拡張に長い時間がかかります。 このトピックでは、SQL文を使用してApsaraDB for ClickHouseクラスターのディスク領域使用量を表示する方法について説明します。
サンプル環境
このトピックでは、s-2-r-0
ノードを基本環境として使用します。 実際の使用では、ビジネス要件に基づいてパラメーターを変更します。 ノード名がわからない場合は、次のいずれかの方法でノード名を取得できます。
ノード名は、ApsaraDB for ClickHouseコンソールの [クラスターモニタリング] タブで取得できます。 [クラスターモニタリング] タブページに移動する方法の詳細については、「クラスターモニタリング情報の表示」をご参照ください。
次のSQL文を実行して、クラスター内のすべてのノードの名前を取得できます。
SELECT * FROM system.clusters;
テーブルが占有するディスク容量の表示
テーブルのデータサイズを確認することで, テーブルが占有するディスク容量を把握できます。 これにより、データベースのパフォーマンスを最適化し、ストレージリソースを適切に計画することができます。
テーブルデータの詳細の表示
s-2-r-0
ノードの各テーブルのアクティブデータの詳細を表示します。SELECT 「データベース」、 テーブル、 formatReadableSize(sum(data_compressed_bytes) AS size) AS compressed, -- Compressed data size formatReadableSize(sum(data_uncompressed_bytes) AS usize) AS compressed, -- uncompressed data size round(usize / size, 2) AS compr_rate, -- 圧縮率 sum(rows) AS rows, -- 合計行数 count() AS part_count -- データ部分の数 からclusterAllReplicas('default' 、system.parts) WHERE (active = 1) AND (table LIKE '%') AND ('database' LIKE '%') AND部分文字列 (ホスト名 () 、38,8) = 's-2-r-0' グループ化 「データベース」、 テーブル 注文によってサイズDESC;
各レプリカのテーブルデータの詳細の表示
各レプリカのテーブルデータを表示します。
SELECT ホスト名 () AS h, 「データベース」、 テーブル、 count(*) AS data_part_cnt, -- データ部分の数 sum(rows) AS total_rows, -- 合計行数 formatReadableSize(sum(bytes_on_disk)) AS total_compressed_bytes, -- 圧縮データサイズ sum(data_uncompressed_bytes) AS total_uncompressed_bytes -- 圧縮されていないデータサイズ からclusterAllReplicas('default' 、system.parts) WHERE active = 1 GROUP BY h、「データベース」、テーブル total_rows DESCによる注文;
最も多くのディスク容量を占めるテーブルのランキングの表示
クラスターで最も多くのディスク容量を占めるトップ10のテーブルを表示します。
SELECT 「データベース」、 テーブル、 sum(bytes_on_disk) AS bytes_on_disk からclusterAllReplicas('default' 、system.parts) WHEREアクティブAND ('database' != 'system') グループ化 「データベース」、 テーブル 注文BY bytes_on_disk DESC LIMIT 10;
テーブル内の各列のストレージ情報の表示
クエリテンプレート
SELECT
「データベース」、
テーブル、
列,
formatReadableSize (合計 (column_data_compressed_bytes) ASサイズ) AS compressed,
formatReadableSize(sum(column_data_uncompressed_bytes) AS usize) AS非圧縮、
ラウンド (usize / size、2) AS compr_rate、
sum (行) rows_cnt、
ラウンド (sum(column_data_uncompressed_bytes)/sum(rows) ,2) avg_row_size
clusterAllReplicasから ('default', system.parts_columns)
WHERE (active = <active_type>) AND (table LIKE '<table_name>')
AND部分文字列 (ホスト名 () 、38,8) = '<node_name>'
グループ化
「データベース」、
テーブル、
列
注文によってサイズDESC;
Parameters
パラメーター | 説明 |
table_name | 各列のストレージ情報を照会するデータテーブルの名前。 値が % の場合、すべてのテーブルの列のストレージ情報が照会されます。 |
node_name | 目的のクラスターノードの名前。 |
active_type | データがアクティブかどうかを指定します。
|
例
s-2-r-0
ノードのquery_log
テーブルのアクティブデータを格納する列を表示します。
SELECT
「データベース」、
テーブル、
列,
formatReadableSize (合計 (column_data_compressed_bytes) ASサイズ) AS compressed,
formatReadableSize(sum(column_data_uncompressed_bytes) AS usize) AS非圧縮、
ラウンド (usize / size、2) AS compr_rate、
sum (行) rows_cnt、
ラウンド (sum(column_data_uncompressed_bytes)/sum(rows) ,2) avg_row_size
clusterAllReplicasから ('default', system.parts_columns)
WHERE (active = 1)
AND (テーブルLIKE 'query_log')
AND部分文字列 (ホスト名 () 、38,8) = 's-2-r-0'
グループ化
「データベース」、
テーブル、
列
注文によってサイズDESC;
テーブルパーティションに関する情報の表示
クエリテンプレート
SELECT
パーティションAS 'Partition' 、
合計 (行) AS「行の総数」、
formatReadableSize(sum(data_uncompressed_bytes)) AS 'Uncompressed data size,
formatReadableSize(sum(data_compressed_bytes)) AS 'Compressed data size',
ラウンド ((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS 'Compression ratio'
からclusterAllReplicas('default' 、system.parts)
WHERE (データベースIN ('<database_name>'))
AND (テーブルIN ('<table_name>'))
AND (partition LIKE '<partition_prefix>')
パーティションによるグループ
パーティションASC
による注文Parameters
パラメーター | 説明 |
database_name | データベースの名前。 |
table_name | データテーブルの名前。 |
partition_prefix | パーティションのプレフィックス。 |
例
default
データベースのtest
テーブルで、プレフィックスが2019-12-
のパーティションに関する情報を表示します。
SELECT
パーティションAS 'Partition' 、
合計 (行) AS「行の総数」、
formatReadableSize(sum(data_uncompressed_bytes)) AS 'Uncompressed data size,
formatReadableSize(sum(data_compressed_bytes)) AS 'Compressed data size',
ラウンド ((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS 'Compression ratio'
からclusterAllReplicas('default' 、system.parts)
WHERE ('database' IN ('default'))
AND (テーブルIN ('test'))
AND (パーティションのような '2019-12-% ')
パーティションによるグループ
パーティションASC
による注文データパーツのサイズを表示する
ApsaraDB for ClickHouseでは、system.part
テーブルに、ステータス、サイズ、作成時刻などのデータパーツ
に関する情報が格納されます。 このテーブルをクエリして、データパーツ
に関する情報を取得できます。
アクティブなデータパーツのサイズの表示
アクティブなデータ部分
には、テーブル内のアクティブなデータが含まれます。 アクティブなデータの量は、テーブルの実際のデータサイズを識別するのに役立ちます。 これにより、テーブルが占有するディスク容量を知ることができます。
s-2-r-0
ノード上のすべての非システムテーブルのアクティブなデータ部分に関する情報を表示します。
SELECT
「データベース」、
テーブル、
count(*) AS data_part_cnt, -- アクティブなデータ部分の数
sum(rows) AS total_rows, -- 合計行数
formatReadableSize(sum(bytes_on_disk)) AS total_compressed_bytes, -- ディスク上の合計圧縮データサイズ
sum(data_uncompressed_bytes) AS total_uncompressed_bytes-非圧縮データサイズの合計
からclusterAllReplicas('default' 、system.parts)
WHERE active = 1 AND 'database'! ='システム'
AND部分文字列 (ホスト名 () 、38,8) = 's-2-r-0'
GROUP BY 'database' 、テーブル
total_rowsによる注文DESC;
非アクティブなデータパーツのサイズの表示
非アクティブなデータ部分
には、古いまたは削除のマークが付けられたデータが含まれます。 データが不要になった場合は、ディスクの使用量を減らすために、タイムリーにデータをクリアすることをお勧めします。
s-2-r-0
ノード上のすべての非システムテーブルの非アクティブなデータ部分に関する情報を表示します。
SELECT
「データベース」、
テーブル、
count(*) AS data_part_cnt, -- 非アクティブなデータ部分の数
sum(rows) AS total_rows, -- 合計行数
formatReadableSize(sum(bytes_on_disk)) AS total_compressed_bytes, -- ディスク上の合計圧縮データサイズ
sum(data_uncompressed_bytes) AS total_uncompressed_bytes-非圧縮データサイズの合計
からclusterAllReplicas('default' 、system.parts)
WHERE active = 0
そして「データベース」! ='システム'
AND部分文字列 (ホスト名 () 、38,8) = 's-2-r-0'
GROUP BY 'database' 、テーブル;
投影によって占有されたディスク容量を表示する
Projectionsは、ApsaraDB for ClickHouseでクエリのパフォーマンスを最適化するために使用されるデータ構造です。 投影は具体化されたビューに似ており、事前に計算された集計またはデータ変換結果を格納します。 投影のサイズを知ることで、ディスク領域への影響を評価できます。
s-2-r-0
ノードのテスト
テーブルのプロジェクションが占有しているディスク容量を表示します。
SELECT
データベース、
テーブル、
name,
formatReadableSize(sum(data_compressed_bytes) AS size) AS compressed, -- Compressed data size
formatReadableSize(sum(data_uncompressed_bytes) AS usize) AS compressed, -- uncompressed data size
round(usize / size, 2) AS compr_rate, -- 圧縮率
sum(rows) AS rows, -- 合計行数
count() AS part_count -- データ部分の数
からclusterAllReplicas('default', system.projection_parts)
WHERE (テーブル='test')
AND (active = 1) AND部分文字列 (ホスト名 () 、38,8) = 's-2-r-0'
グループ化
データベース、
テーブル、
名前
注文によってサイズDESC;
s-2-r-0
ノードのテスト
テーブルの各プロジェクション列が占めるディスク容量を表示します。
SELECT
データベース、
テーブル、
列,
formatReadableSize(sum(column_data_compressed_bytes) AS size) AS compressed, -- Compressed data size
formatReadableSize(sum(column_data_uncompressed_bytes) AS usize) AS uncompressed, -- Uncompressed data size
ラウンド (usize / size, 2) AS compr_rate -- 圧縮率
clusterAllReplicasから ('default', system.projection_parts_columns)
WHERE (active = 1) AND (テーブルLIKE 'test')
AND部分文字列 (ホスト名 () 、38,8) = 's-2-r-0'
グループ化
データベース、
テーブル、
列
注文によってサイズDESC;