azure 使用uniqueidentifier列进行散列分区

cfh9epnr  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(114)

我有两个事实数据表:事实受事与事实生产
两者都使用几个带有uniqueidentifier的列,我想知道这是否是一个好的实践,并建议使用这种类型的列作为表的散列分布(目前它们是循环的)。
希望知道要使用的列。

u3r8eeie

u3r8eeie1#

  • 选择分布列时,应使列具有许多唯一值,并且数据在所有分布中均匀分布。
  • 您可以使用下面的查询来检查存储在所选分布列的每个分布中的行数。请确保数据均匀分布。
-- Find data skew for a distributed table
DBCC PDW_SHOWSPACEUSED('dbo.FactPatient');
  • 建议在分布列中包含零个空值或少量空值。此外,该列不应是日期列。
  • 分布列应该是主要用于 * 联接 、聚合(如 group by has *)的列。不应选择在 where 中使用的列作为分布列。还建议选择可最大限度减少数据移动的分布列。
  • 并不总是能够同时实现均匀分布的数据和最小化的数据移动。因此,在选择分布列时,应在最小化数据不对称和数据移动之间找到适当的平衡。
    参考:Distributed tables design guidance - Azure Synapse Analytics | Microsoft Learn

相关问题