Azure 数据资源管理器分区策略

Azure Data Explorer partitioning policy

有关 ADX 分区策略的文档(https://docs.microsoft.com/en-us/azure/data-explorer/kusto/management/partitioningpolicy#the-data-partitioning-process) 提到您需要在使用散列分区键时设置 MaxPartitionCount。它还指出该值应在 (1,2048] 范围内,并建议从 128.

开始

问题:如果我有一个基数为 100,000 的列。最大分区数不应该是 100,000 吗? ADX 不应该为列中的每个不同值创建一个分区吗?为什么还要填这个 属性 MaxPartitionCount?

在推荐的场景中(在您链接到的文档中有详细说明)- 最终目标不是为分区键的每个不同值创建一个单独的分区。

  • 具有极端数量的分区(在您的问题中为 100k,或者在唯一设备 ID 的情况下为数十亿)可能会导致大量的小数据碎片,这将是次优的。

  • 即使使用“仅”128 作为最大分区数,以及默认的内置索引(无论显式数据分区如何)——在查询计划时能够非常显着地缩小完整数据集的能力少量 partitions/shards 的时间可以显着减少资源利用率和执行时间。

进一步阅读:kusto.blog

一般来说,不遵循文档中的指南和建议不太可能使您获得最佳结果。