【问题标题】:How to get around sql-server's partition maximum?如何绕过 sql-server 的最大分区?
【发布时间】:2012-03-14 14:08:33
【问题描述】:

我的团队正在尝试运行源代码控制中的脚本来创建分区,但我们遇到了以下错误:CREATE/ALTER partition function failed as only a maximum of 1000 partitions can be created.

部分脚本:

CREATE PARTITION FUNCTION [PFDailyPartition](DATETIME)
    AS RANGE RIGHT FOR VALUES ('01/01/2005 00:00:00'
 '01/02/2005 00:00:00'
 '01/03/2005 00:00:00'
 '01/04/2005 00:00:00'
 '01/05/2005 00:00:00'
 '01/06/2005 00:00:00'
 '01/07/2005 00:00:00'
 '01/08/2005 00:00:00'
 '01/09/2005 00:00:00'
 '01/10/2005 00:00:00'
 '01/11/2005 00:00:00'
 '01/12/2005 00:00:00'
 '01/13/2005 00:00:00'
 '01/14/2005 00:00:00'
 etc...

在我们当前的设置上运行 select * from sys.partition_range_values 表明我们有超过 10,000 个分区。

有没有办法绕过这个 1000 的限制?我们无法弄清楚我们是如何拥有这么多分区的。

这可能是两种设置之间的环境差异吗?

提前致谢!

【问题讨论】:

    标签: sql-server sql-server-2008 database-partitioning


    【解决方案1】:

    您的分区功能是按天创建单独的分区。那是很多分区!自 2005 年以来,这将是大约 365 * 7 = 2,555 个分区。您真的想要按天分开分区吗?

    根据this article,SQL Server 2008 SP2 和 SQL Server 2008 R2 SP1 将限制增加到 15,000 个分区。服务器之间是否存在服务包差异?

    引自文章:

    问题

    SQL Server 2005 引入了表和索引分区。分区 可以使大型表和索引更易于管理和扩展。为了 有关分区的更多信息,请参阅分区表和 索引 (http://msdn.microsoft.com/en-us/library/ms188706(v=SQL.100).aspx)。在 SQL Server 2005、SQL Server 2008 和 SQL Server 2008 R2,数量 分区数限制为 1,000 个。

    客户主要使用分区来方便管理 数据仓库中的大型事实表。数据仓库客户 通常将数据作为批处理加载。每日负载是最常见的 模式,但越来越多的客户希望在一个 天。在 1,000 个分区的限制下,如果客户每天加载,他们 可以在分区表中存储不到三年的数据, 而业务需求通常要求保留数据以用于 更长的时间,比如七年。 1000 个分区 在这种情况下,最大值成为客户的限制。

    如果分区合并过于复杂和耗时,客户 更喜欢具有创建大量分区的灵活性 并在需要时使用它们。最多 1,000 个分区 在这种情况下成为一个限制。

    解决方案

    在 SQL Server 2008 SP2 和 SQL Server 2008 R2 SP1 中,您可以选择 以数据库级粒度支持 15,000 个分区 通过使用新的 sp_db_increased_pa​​rtitions 存储过程。你可以 还禁用对数据库的支持(启用后)并设置 分区数限制回到1000。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2014-12-19
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多