Sql server 2005 SQL server分区
我有一个有数百万条记录的表,我们正在考虑实现表分区。看看它,我们有一个外键“GroupID”,我们想对它进行分区。这可能吗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后,是否可以动态创建分区?是的,您可以使用分区,是的,可以动态创建新分区。不过,使用不需要更新的分区方案是最容易的 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标准支持它吗?