Azure sql database 如何在Azure SQL数据仓库中基于月份和年份进行分区

Azure sql database 如何在Azure SQL数据仓库中基于月份和年份进行分区,azure-sql-database,azure-sqldw,Azure Sql Database,Azure Sqldw,我将使用ADF将50亿行复制到Azure SQL数据仓库。Azure SQL DWH默认情况下会将表分发到60个分发版中,但我想根据月份和年份再添加50个分区,如下所示: PARTITION ( DateP RANGE RIGHT FOR VALUES ( '2015-01-01', 2015-02-01', ......2018-01-01','2018-02-01','2018-03-01','2018-04-01','2018-5-01',.....

我将使用ADF将50亿行复制到Azure SQL数据仓库。Azure SQL DWH默认情况下会将表分发到60个分发版中,但我想根据月份和年份再添加50个分区,如下所示:

PARTITION ( DateP  RANGE RIGHT FOR VALUES   
      (  
        '2015-01-01', 2015-02-01', ......2018-01-01','2018-02-01','2018-03-01','2018-04-01','2018-5-01',.......
        ))
但是,我用来划分表的列包括日期和时间:

2015-01-01 00:30:00
您认为我的分区方法正确吗?

5B行/(50个分区x 60个分布)=平均170万行/分区

这可能是太多的分区了,但是如果您有很多单月查询,这可能是值得的。您肯定希望在加载后重新加载。

5B行/(50个分区x 60个分布)=平均170万行/分区


这可能是太多的分区了,但是如果您有很多单月查询,这可能是值得的。您肯定希望在加载后重新加载。

我倾向于同意David的观点,即对于分区的数量来说,这可能是过度的。您需要确保数据分布非常均匀,并且大约有170万行,您将处于较低的位置。您可能可以移动到基于季度的分区(例如,“2017-12-31”、“2018-03-01”、“2018-06-30”),以获得良好的查询性能结果。自2015年起,每年将有4个分区(总共20个)。因此,数学是:

5B行/(20个分区*60个分布)=4167万行/分区


虽然分区的数量对分区消除场景很重要,但这是一个具有列存储索引的事实表,它将在查询期间执行额外级别的索引段消除。过度分区会使情况变得更糟而不是更好

我倾向于同意David的观点,即对于分区的数量来说,这可能是过分的。您需要确保数据分布非常均匀,并且大约有170万行,您将处于较低的位置。您可能可以移动到基于季度的分区(例如,“2017-12-31”、“2018-03-01”、“2018-06-30”),以获得良好的查询性能结果。自2015年起,每年将有4个分区(总共20个)。因此,数学是:

5B行/(20个分区*60个分布)=4167万行/分区


虽然分区的数量对分区消除场景很重要,但这是一个具有列存储索引的事实表,它将在查询期间执行额外级别的索引段消除。过度分区会使情况变得更糟而不是更好

Microsoft的指南规定,在调整分区大小时,尤其是Azure DW中的columnstore索引表,每个分区的最小卷必须为6000万行。任何较低的值都可能无法提供最佳性能。其逻辑是,每个分区的每个分发必须至少有1m行。由于创建的每个分区都将在内部创建60个额外的发行版,因此建议创建的每个分区的最小容量为6000万行

Microsoft的指导原则规定,在调整分区大小时,特别是Azure DW中的columnstore索引表,每个分区的最小容量必须为6000万行。任何较低的值都可能无法提供最佳性能。其逻辑是,每个分区的每个分发必须至少有1m行。由于创建的每个分区都将在内部创建60个额外的分发版,因此建议创建的每个分区的最小值为60M

在我接受您的建议之前,我开始加载数据,我注意到加载50亿行可能需要几天时间,但是,当我运行select count(*)时,它将向我显示当前加载的数据,例如,它现在是56622406,但是当尝试查看每个分区中的行数时,它会显示56个分区和每个分区中的20行,这有意义吗?另外,仅供参考,我们的数据是一个时间序列仪表数据,我们希望每30分钟将其可视化一次,那么你仍然认为50个分区太多了吗?在我接受你的建议之前,我开始加载数据,我注意到加载50亿行可能需要几天的时间,但是,当我运行select count(*)时,它会显示当前加载的数据,例如现在是56622406,但是,当尝试查看每个分区中的行数时,它会显示56个分区,每个分区中有20行,这有意义吗?另外,仅供参考,我们的数据是一个时间序列仪表数据,我们希望每30分钟将其可视化一次,所以您是否仍然认为50个分区太多?欢迎。这是有用的指导。既然您将其归因于Microsoft,您能否提供一个指向他们提供它的位置的链接?这将有助于使声明更具权威性。欢迎。这是有用的指导。既然您将其归因于Microsoft,您能否提供一个指向他们提供它的位置的链接?这将有助于使这一主张更具权威性。