表Kusto/ADX集群之间的编码策略差异



我在两个不同的ADX/Kusto集群中有完全相同的表——数据/架构是相同的,但如果我为1天的数据计算ExtentSize,两者之间的差异是巨大的。集群上的表有10TB,而另一个集群上的表格有15TB。这是一个很大的区别。当我检查这两个表上的编码策略时,有一点不同。第一个集群上的表具有以下编码策略:-

"ColumnIndexRangeGranularity": 0,
"ShardFieldCompressionCodec": "DEFAULT",

而另一个集群上的表有以下内容:-

"ColumnIndexRangeGranularity": 32,
"ShardFieldCompressionCodec": "LZ4",

我的目标是将其他表的大小降低到与第一个表相同的大小,这样我就可以使用更少的缓存策略。所以理想情况下,我想更改这两个参数。但当我触发以下命令时,它对表的编码策略没有影响:-

.alter table MyTable policy encoding   @'{ "ShardFieldCompressionCodec": "Default" }'

也没有错误。

所以我有两个问题。

  1. 每当我们试图更改的编码策略时,ADX是否会忽略桌子?当创建的表默认情况下由集群分配
  2. 这是否意味着,如果我们在两个不同的文件夹中有相同的表使用相同的模式/表--它们的数据块大小总是变化(因为基础表压缩不同(

可以在不同的实体上设置编码策略:

  • 列-仅影响策略更改后摄入到列中的数据
  • 表-仅影响在策略更改后将添加到表中的列
  • 数据库–仅影响在策略更改后将在数据库中创建的表

您感兴趣的似乎是更改级别策略,而不是级策略。不过,您应该明白,这不会改变已经摄入的数据的编码。

万一有人正在搜索如何更改列编码的基本语法:下面是一个示例

.show column eventlog.event_text   policy encoding
.alter column mytable.mytextcolumn policy  encoding @'{"MinTermLength": 8, 
"MinSubstringLength": 8}'

在更改这些值之前,请先阅读Kusto文档。

最新更新