MergeTree テーブルの (パーツ、カラム、サブストリーム) ごとに、各 codec を使用している圧縮ブロック数を報告します。これにより、デフォルト codec を使用するカラムではブロックごとに codec を選択できる、allow_experimental_adaptive_codec_selection 設定で有効になる適応型 codec 選択を確認できます。
codec_block_counts を選択すると、メタデータだけでなく .bin データファイルも読み取ります。ほかのカラムはメタデータのみを読み取ります。
サブストリームを columns_substreams.txt に記録しないパーツは一覧に表示されません。
現在のユーザーに対してテーブルに行ポリシーが適用されている場合、codec_block_counts を読み取ると ACCESS_DENIED がスローされます。カウントにはポリシーによって非表示となる行も含まれるためです。ほかのカラムは引き続き読み取ることができ、system.parts_columns は行ポリシーにかかわらずこれらを報告します。
構文
mergeTreeCodecBlockCounts(database, table)引数
| 引数 | 説明 |
|---|---|
database |
テーブルのデータベース名。 |
table |
MergeTree テーブルの名前。 |
戻り値
ログソーステーブルの (アクティブなパーツ、カラム、サブストリーム) ごとに1行を含むテーブルオブジェクト:
part_name(String) — カラムが属するアクティブなデータパーツ。column(String) — カラム名。substream(String) — カウント対象のカラムの物理ストリーム。system.parts_columns.substreamsと一致します。data_compressed_bytes(Nullable(UInt64)) — サブストリーム内の圧縮データのサイズ (バイト単位) 。CompactパーツではNULL。data_uncompressed_bytes(Nullable(UInt64)) — サブストリーム内の非圧縮データのサイズ (バイト単位) 。CompactパーツではNULL。codec_block_counts(Map(String, UInt64)) — codec ごとに集計した、このサブストリームの圧縮ブロック数。カラムが1つのデータファイルを共有するためストリームごとの codec 割り当てがないCompactパーツでは空です。
使用例
CREATE TABLE mt (a UInt64) ENGINE = MergeTree ORDER BY a
SETTINGS min_bytes_for_wide_part = 0;
INSERT INTO mt SELECT number FROM numbers(100000);
SELECT column, substream, codec_block_counts
FROM mergeTreeCodecBlockCounts(currentDatabase(), mt);┌─column─┬─substream─┬─codec_block_counts─┐
│ a │ a │ {'LZ4':13} │
└────────┴───────────┴────────────────────┘カラムレベルのtotalsは、sumMap を使用する GROUP BY column です。
SELECT column, sumMap(codec_block_counts)
FROM mergeTreeCodecBlockCounts(currentDatabase(), mt)
GROUP BY column;LowCardinality カラムでは、Dictionary と索引のストリームがそれぞれ個別に報告されます。
CREATE TABLE mt_lc (s LowCardinality(String)) ENGINE = MergeTree ORDER BY tuple()
SETTINGS min_bytes_for_wide_part = 0;
INSERT INTO mt_lc SELECT toString(number % 1000) FROM numbers(1000000);
SELECT substream, codec_block_counts
FROM mergeTreeCodecBlockCounts(currentDatabase(), mt_lc)
WHERE column = 's'
ORDER BY substream;┌─substream─┬─codec_block_counts─┐
│ s │ {'LZ4':31} │
│ s.dict │ {'LZ4':1} │
└───────────┴────────────────────┘