在 Azure Synapse 中,如何检查 table 的分布情况

In Azure Synpase, how can I check how a table is distributed

在 Azure Synapse 中,如何检查 table 的分布情况。比如是循环分发还是hash key分发。

您可以在专用 SQL 池中使用动态管理视图 (DMV) sys.pdw_table_distribution_properties 来确定 table 是通过循环、散列还是复制进行分发,例如

SELECT 
       OBJECT_SCHEMA_NAME( object_id ) schemaName, 
       OBJECT_NAME( object_id ) tableName,
       *
FROM sys.pdw_table_distribution_properties;

这是 distribution_policy_desc 列。一些示例结果:

不要混淆 distribution and partitioning。我已经更新了问题。


pdw_table_distribution_properties当然是有可能的。

或者使用任何客户端(Data Studio、SSMS、带有插件的 VS Code,...)为 table 生成创建 DDL。

例如在 Azure Data Studio 中,右键单击 table 并单击“Script as Create”。

WITH 子句中寻找 DISTRIBUTION

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[sa_logs]
(
    [version_number] [float] NULL,
    [request_start_time] [datetimeoffset](7) NULL,
    ...
    [referrer_header] [varchar](256) NULL,
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    HEAP
)
GO

或 table 与 HASH:

...
    DISTRIBUTION = HASH ( [hash_column] ),
...