すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:ディスクスペース使用量の表示

最終更新日:Oct 17, 2024

ストレージ使用量は、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

データがアクティブかどうかを指定します。

  • 0: inactive

  • 1: active

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;