我看到clickhouse为每个分区键(在每个节点中)创建了多个目录。文档中说目录名的格式是:分区id\u最小块号\u最大块号\u级别。你知道这里是什么水平吗?一个节点上的347个不同分区键(对于一个表)创建了1358个目录(自定义分区)文档建议分区不要超过1000个。我们应该记住分区键的数量还是目录的数量?另外,是否有关于如何控制目录数量的配置?
k3fezbri1#
你知道这里是什么水平吗?level是lsm树的一个概念。mergetree表具有将数据部分合并到更大和更深(w.r.t级)的机制。我们应该记住分区键的数量还是目录的数量?我不认为这是个好主意,因为这种方法不能很好地扩展。您最好选择一个低基数列或表达式作为分区键。另外,是否有关于如何控制目录数量的配置?没有明确的设置。但是您可以很容易地使用模块化表达式来限制分区的总数。
ghhkc1vu2#
除此之外,您还可以通过以下方式检查部件和分区:对于活动分区:
select count(distinct partition) from system.parts where the table in ('table_name') and active
对于活动部件:
select count() from system.parts where table in ('table_name') and active
不活跃的部分将很快在10分钟内被移除。此外,您还可以在这里阅读更多关于部分、分区以及合并是如何发生的。要同时查看表部件和分区,请执行以下操作:
SELECT partition, name, active FROM system.parts WHERE table = 'table_name'
2条答案
按热度按时间k3fezbri1#
你知道这里是什么水平吗?
level是lsm树的一个概念。mergetree表具有将数据部分合并到更大和更深(w.r.t级)的机制。
我们应该记住分区键的数量还是目录的数量?
我不认为这是个好主意,因为这种方法不能很好地扩展。您最好选择一个低基数列或表达式作为分区键。
另外,是否有关于如何控制目录数量的配置?
没有明确的设置。但是您可以很容易地使用模块化表达式来限制分区的总数。
ghhkc1vu2#
除此之外,您还可以通过以下方式检查部件和分区:
对于活动分区:
对于活动部件:
不活跃的部分将很快在10分钟内被移除。
此外,您还可以在这里阅读更多关于部分、分区以及合并是如何发生的。
要同时查看表部件和分区,请执行以下操作: