[我看到Clickhouse为每个分区键创建了多个目录。
Documentation says目录名称格式为:分区名称,数据块的最小数量,数据块的最大数量和块级别。例如,目录名称是201901_1_11_1
。
我认为这意味着目录是属于分区201901的一部分,具有从1到11的块,并且位于级别[[1)上。因此,我们可以拥有另一个目录,例如201901_12_21_1
,这意味着该部分属于分区201901,具有从[[12到21的块,并且位于级别[[1]]上。 >。 因此,我认为分区分为不同的部分。我说的对吗?
选择不关心分区。
选择不知道分区键。
create table X (A Int64, B Date, K Int64,C String)
Engine=MergeTree partition by (A, toYYYYMM(B)) order by K;
insert into X values (1, today(), 1, '1');
cd /var/lib/clickhouse/data/default/X/1-202002_1_1_0/
ls -1 *.idx
minmax_A.idx <-----
minmax_B.idx <-----
primary.idx
SET send_logs_level = 'debug';
select * from X where A = 555;
(SelectExecutor): MinMax index condition: (column 0 in [555, 555])
(SelectExecutor): Selected 0 parts by date
SelectExecutor检查了内存中的零件列表,发现0个零件,因为minmax_A.idx =(1,1),并且需要进行此选择(555,555)。
CH不存储分区键值。
因此,例如toYYYYMM(today())= 202002,但此202002不会存储在零件或任何地方。minmax_B.idx存储(18302,18302)
(2020-02-10 == select toInt16(today()))