查看热缓存中数据实际占用大小的可靠方法

Reliable method to check actual size occupied by data in hot cache

我有一个 table,上面有 1 天的热缓存策略。并假设 ADX 集群的缓存利用率低于 80%。考虑到这一点,什么是准确知道 table 实际占用的缓存量 space (TB) 的可靠方法?我想出了以下两种方法,但它们都 return 明显不同的数字:-

.show table <TableName> extents hot | summarize sum(ExtentSize)/pow(1024,4)
.show table <TableName> extents | where MaxCreatedOn >= ago(1d) | summarize extent_size=sum(ExtentSize) | project size_in_TB=((extent_size)/pow(1024,4))

第二个命令 returns 计数比第一个命令高 10 倍以上。怎么会这么不一样?

你 运行 的两个命令应该产生相同的值,假设:

  1. 你运行他们同时(或快速一个接一个)
  2. 有效 缓存策略确实是 1 天(您确认确实如此吗?)

无论如何 - 获取该数据点的最有效方法是使用以下命令:

.show table TABLENAME details
| project HotExtentSizeTb = HotExtentSize/exp2(40), CachingPolicy

这是我的 table 的示例,它的缓存策略为 4 天(设置为 table 级别),保留策略的软删除期限为 3650 天:

// option 1
// --------
.show table yonis_table extents hot
| summarize HotExtentSizeTb = sum(ExtentSize)/exp2(40)

  // returns: HotExtentSizeTb: 0.723723856871402   <---

// option 2: least efficient
// -------------------------
.show table yonis_table extents
| where MaxCreatedOn >= ago(4d)
| summarize HotExtentSizeTb = sum(ExtentSize)/exp2(40)

  // returns: HotExtentSizeTb: 0.723723856871402   <---

// option 3: most efficient
// ------------------------
.show table yonis_table details
| project HotExtentSizeTb = HotExtentSize/exp2(40), CachingPolicy, RetentionPolicy

   // returns: 
   HotExtentSizeTb: 0.723723856871402,             <---
   CachingPolicy: {
     "DataHotSpan": "4.00:00:00"
   },
   RetentionPolicy: {
     "SoftDeletePeriod": "3650.00:00:00",
     "Recoverability": "Enabled"
   }