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。
一般来说,不遵循文档中的指南和建议不太可能使您获得最佳结果。
有关 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。
一般来说,不遵循文档中的指南和建议不太可能使您获得最佳结果。