nternal_replication:是否只写入所有replica中的一台
true:代表了只写入shard内的一台,与ZooKeeper配合进行复制;
false:代表了写入shard内所有的replica,与分布式表配合进行复制。
遇到的问题点1
nternal_replication:TRUE
shard_num=1
CK集群,建立本地表,engine=MergeTree(),基于本地表建立分布式表,
通过flink将数据插入到节点A的本地表,通过分布式表查询数据,只有节点A可以查得到,其余节点都无法进行查询,
将本地表的engine修改为ReplicatedMergeTree就可以查询得到。
新建集群分片>1 备份改为1,MergeTree()时候也是可以查得到数据
shard_num 1 mergeTree时候 ,读分布式表执行计划如下
shard_num 2 mergeTree时候 ,读分布式表执行计划如下
通过 system.parts 系统表,查询数据表的分区状态:
SELECT table, partition, path FROM system.parts WHERE table = 'tableName';
计算占用多少磁盘空间
select
sum(rows) as row,
formatReadableSize(sum(bytes_on_disk)) as used_disk,
formatReadableSize(sum(data_uncompressed_bytes)) as brfore_compress,
formatReadableSize(sum(data_compressed_bytes)) as after_compress,
round(sum(data_compressed_bytes) / sum(data_uncompressed_bytes) * 100, 0) compress_rate
from system.parts;
按照表进行统计各自占用空间
SELECT table, formatReadableSize(sum(bytes)) as size, min(min_date) as min_date, max(max_date) as max_date
FROM system.parts WHERE active GROUP BY table;