Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 SQL server分区_Sql Server 2005_Partitioning - Fatal编程技术网

Sql server 2005 SQL server分区

Sql server 2005 SQL server分区,sql-server-2005,partitioning,Sql Server 2005,Partitioning,我有一个有数百万条记录的表,我们正在考虑实现表分区。看看它,我们有一个外键“GroupID”,我们想对它进行分区。这可能吗 该组将添加更多的条目,因此添加新的GroupID后,是否可以动态创建分区?是的,您可以使用分区,是的,可以动态创建新分区。不过,使用不需要更新的分区方案是最容易的 SQL Enterprise 2005及以后的版本: 如果您使用的是SQL development edition或enterprise edition,则SQL 2005及更高版本内置了对分区的透明支持。动态添

我有一个有数百万条记录的表,我们正在考虑实现表分区。看看它,我们有一个外键“GroupID”,我们想对它进行分区。这可能吗


该组将添加更多的条目,因此添加新的GroupID后,是否可以动态创建分区?

是的,您可以使用分区,是的,可以动态创建新分区。不过,使用不需要更新的分区方案是最容易的

SQL Enterprise 2005及以后的版本:

如果您使用的是SQL development edition或enterprise edition,则SQL 2005及更高版本内置了对分区的透明支持。动态添加更多分区意味着您必须创建一个新的分区函数、新的分区方案以及可能的新文件组

您可以使用拆分来更改分区函数:

ALTER PARTITION FUNCTION MyPartitionFunction ()
SPLIT RANGE (2);
SQL 2000或SQL 2005及以上非企业版:

否则,您仍然可以使用分区,但需要使用旧的MS SQL 2000方法。在旧方法中,您必须物理地创建许多表,然后创建一个视图,该视图是所有表的联合。因此,您需要事先了解模式

关于旧分区方式的好消息是,动态创建新分区更容易。您只需要创建一个具有新约束的新表并更新视图


尽管有一些限制,分区列必须是主键的一部分。要直接插入视图,您不需要标识列(由MS SQL自动递增)

组ID可能不是分区的最佳项目,分区适合滚动窗口效果,其设计更适合删除过时数据和滚动新数据

通过按ID分组,您只允许自己添加/删除组,例如,数据的时间/寿命没有任何元素。每个分区表也有1000个分区的硬限制,将您限制为1000个组。由于您打算添加组ID,并且该组ID未显示为静态数字,因此您可能会达到此硬限制

扩展1000限制的唯一选项是跨多个分区表放置分区视图

我想问的问题是,是什么原因导致添加新数据/删除旧数据,这是基于什么原因产生的。仅仅因为这个表有数百万行,并不能使它立即成为分区的候选对象,这就是为什么我要问这个问题


就动态添加它们而言,该功能不存在,您必须编写存储过程和逻辑来处理新文件组/下一个使用的集合的分配和分区函数的拆分。这是可以做到的,但SQL不会帮你做到。

如何在组上分区,你仍然使用范围吗?你可以在int上分区,所以在GroupID上分区是可以的,你需要检查的是你是否有超过1000个组,在这一点上,您开始执行范围,即每个分区10个范围,然后您应该停下来问-这样做有什么好处,仅分区消除-您没有测试表明它会有帮助-它会阻碍一些查询。我同意。我们有1000多个。我们想划分出前3个组。2005标准没有内置这种功能?@durilai:没错,你必须使用旧的分区方式。企业是昂贵的(对于一些人的预算来说),不幸的是,他们没有在标准中包括分区。@durilai:我也为您添加了一些关于旧分区方式的常见缺陷。我不确定我会说“非常昂贵”——它相对而言,与功能类似的平台相比,它的价格很高。当存储在数十亿行(适合许多分区系统)中时,存储成本会使任何SQL成本相形见绌:)SQL 2008标准支持它吗?