我正在使用基于字符串(散列)和基于时间(统一)的分区策略来优化数据库。为了优化查询性能,我正在研究哈希分区键的设置“MaxPartitionCount”(https://learn.microsoft.com/en-us/azure/data-explorer/kusto/management/partitioningpolicy)。
当选择 128 个 bin 的默认设置时,我最终得到每个统一范围日期时间分区 128*2 的范围。我预计每个统一范围数据时间分区只能获得 128 个范围,因为具有相同分区元数据的每对范围都满足合并和分片策略设置的合并条件。有什么建议为什么会出现这种情况吗?
我只使用统一范围分区策略和数据集的一小部分的最小示例:
分区策略:
"EffectiveDateTime" : "1970-01-01T00:00:00",
"PartitionKeys": [
{
"ColumnName": "timestamp",
"Kind": "UniformRange",
"Properties": {
"Reference": "1970-01-01T00:00:00",
"RangeSize": "01.00:00:00",
"OverrideCreationTime": true
}
}
在这种情况下,我每天获得两个范围,如下面的数字所示,其中大小以字节为单位。
原始尺寸 | 范围大小 | 压缩大小 | 行数 | 最大创建时间 | B 栏 |
---|---|---|---|---|---|
87058761 | 8022944 | 7932142 | 838350 | 2023-10-26T23:52:30Z | 2023-10-26T07:10:00Z |
720604715 | 60644931 | 59245697 | 6920424 | 2023-10-26T23:59:50Z | 2023-10-26T00:00:00Z |
将数字与下面显示的合并策略进行比较,我不明白为什么这两个范围不合并?
"RowCountUpperBoundForMerge": 16000000,
"OriginalSizeMBUpperBoundForMerge": 30000,
"MaxExtentsToMerge": 100,
"LoopPeriod": "01:00:00",
"MaxRangeInHours": 48,
"AllowRebuild": true,
"AllowMerge": true,
"Lookback": {
"Kind": "All",
"CustomPeriod": null
},
"ShardEngineMaxExtentSizeInMb": 8192,