首页 > 解决方案 > Azure SQL 数据库分区

问题描述

我目前有一个 Azure SQL 数据库(标准 100 DTU S3),我想在一个大表上创建分区,将 datetime2 值拆分为 YYYYMM。每个表至少有以下列:

我一直在查看 Azure 文档和 SO,但找不到任何清楚说明如何以所需格式在“datetime2”上创建分区的内容,或者即使 SQL 数据库类型支持它。

另一个示例,如果尝试下面的链接,但我没有找到在 SQL Studio 中创建分区以在存储菜单上创建分区的选项。

https://www.sqlshack.com/database-table-partitioning-sql-server/

此外,这些表是否必须每天在时钟超过 12 点时创建,还是自动完成?

更新

我怀疑我可能必须使用下面的第一个链接手动创建分区,然后在每个月初,使用第二个链接提前创建下个月的分区表。

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-partition-function-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-partition-function-transact-sql?view=sql-server-ver15

语境

我目前连接到一个实时提要,该提要每分钟提供多达 600 行,并且积压了大约 3.7 亿条 3 年的数据。

标签: sql-serverazuredatabase-partitioning

解决方案


正确的。

您可以根据 datetime2 列创建分区。通常,您只需在月初执行此操作,然后使用 RANGE RIGHT (以便将月初包含在分区中)。

是的,在每个月底,正常的行动是:

  • 拆分分区功能以添加新的分区选项。
  • 出于归档目的,将最旧的每月分区切换到单独的表中(假设您希望有几个月的滚动期)

另一个是的,我们都希望该产品可以自动为您执行此操作。

早在 2008 年,我是 Ron Talmage 的以下白皮书的技术评论员之一,其中 99% 的建议仍然是最新的: https ://docs.microsoft.com/en-us/previous-versions/sql/ sql-server-2008/dd578580(v=sql.100)


推荐阅读