为分区表添加一个分区,这种情况是时常会 发生的。比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区表添加一个分区,让它把新的数据放在新的 分区里。再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放。
遇到这种情况,就必须要为分区表添加一个分区了。
当然,我们也可以使用修改分区函数的方式来添加一个分区,但是在修改分区函数时,我们必须要注意另一个问题——分区方案。为什么还要注意分区方案呢?我们回过头来看一下前面是怎么定义分区函数和分区方案的,如以下代码所示:
[c-sharp]view plaincopy
- --添加分区函数
- CREATE PARTITION FUNCTION partfunSale (datetime)
- AS RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101')
- --添加分区方案
- CREATE PARTITION SCHEME partschSale
- AS PARTITION partfunSale
- TO ( Sale2009, Sale2010, Sale2011, Sale2012, Sale2013)
从以上代码中可以看出,分区函数定义了用于分区的数据边界,而分区函数指定了符合分区边界的数据存放在文件组。因此,分区方案中指定的文件组个数应该是 比分区函数中指定的边界数大1的。如上例中,分区函数中指定的边界数为4,那么在分区方案中指定的文件组数就为5。
如果,我们将分区函数中的边界数增加一个,那么分区方案中的文件组数也就要相应地增加一个。因此,我们不能简简单单地通过修改分区函数的方式来为分区表添加一个分区。
那么,我们应该怎么做呢?是不是要先为分区方案添加一个文件组?
这种想法是没有错的,想要为分区表添加一个分区,可以通过以下两个步骤来实现:
1、为分区方案指定一个可以使用的文件组。
2、修改分区函数。
在为分区方案指定一个可用的文件组时,该分区方案并没有立刻使用这个文件组,只是将文件组先备用着,等修改了分区函数之后分区方案才会使用这个文件组(不要忘记了,如果分区函数没有变,分区方案中的文件组个数就不能变)。
为分区方案指定一个可用的文件组的代码如下所示:
[c-sharp]view plaincopy
- ALTER PARTITION SCHEME partschSale
- NEXT USED [Sale2010]
其中:
1、ALTER PARTITION SCHEME意思是修改分区方案
2、partschSale是分区方案名
3、NEXT USED意思是下一个可使用的文件组
4、[Sale2010]是文件组名
为分区方案添加了下一个可使用的文件组之后,分区方案并没有立刻使用这个文件组,此时我们可以通过查看分区方案的源代码来证实。查看方法是:在SQL Server Management Studio中,选择数据库-->存储-->分区方案,右击分区方案名,在弹出的菜单中选择“编写分区方案脚本为”-->CREATE 到-->新查询编辑器窗口,如下图所示:
为分区方案添加了下一个可使用的文件组之后,我们就可以动手修改分区函数了,使用代码如下所示:
[c-sharp]view plaincopy
- ALTER PARTITION FUNCTION partfunSale()
- SPLIT RANGE ('20100101')
其中:
1、ALTER PARTITION FUNCTION意思是修改分区函数
2、partfunSale()为分区函数名
3、SPLIT RANGE 意思是分割界限
4、'20100101' 是用于分割的界限值
当然,我们在修改分区函数前后都可以统计一下各物理分区的数据记录情况,如以下代码所示:
[c-sharp]view plaincopy
- --统计所有分区表中的记录总数
- select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)
- --原来的分区函数是将2010-1-1之前的数据放在第1个分区表中,将2010-1-1至2011-1-1之间的数据放在第2个分区表中
- --现在需要将2011-1-1之前的数据都放在第1个分区表中,也就是将第1个分区表和第2个分区表中的数据合并
- --修改分区函数
- ALTER PARTITION FUNCTION partfunSale()
- SPLIT RANGE ('20100101')
- --统计所有分区表中的记录总数
- select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)
以上代码的运行结果如下图所示:
从上图中可以看出,分区表中已经添加了一个分区,我们也可以再一次查看分区方案的源代码,如下图所示,这个时候分区方案也自动添加了一个文件组。
相关推荐
SQL Server 2005 中的分区表和索引
sqlserver2005表分区方案建设
MS SQL Server:分区表、分区索引 详解 1. 分区表简介 使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。 大型表:数据量巨大的表。 访问模式:因目的不同,需访问的...
SQL Server 在处理大型数据中,如果我们把安系统默认的格式,将所有数据都写到一个文件中,那么我们对数据的操作可想而知,效率决对是相当低的,为了让SQL Server也能处理大型数据,SQL Server 2005开始支持分区表,...
本书是Inside Microsoft SQL Server 2005系列四本著作中的一本。它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于...
详细介绍了有关SQL Server2005数据库分区表的技术要点和相关知识,精彩!不可多得!
查看sqlserver表分区数据分布,需要的同学下载看看吧
SQLServer2005中的表分区功能和索引
sqlServer数据库大表分区方案,新建表的时候。。如何表分区。
SQLServer2005中的分区表技术精华 分区表技术,创建表分区方法与步骤,实际创建分区的例子。
分区索引 分区索引 分区索引 分区索引分区索引分区索引分区索引分区索引
此文档中详细的记载了,SQL Server 2005新特性之表分区的功能,希望可以帮下载的朋友们!
SQL Server 2005 中的分区表和索引.doc
超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。...本文通过一个具体实例,介绍如何创建和修改分区表,以及如何查看分区表。
是Inside Microsoft SQL Server 2005系列书中的第一本,SQL Server类的顶尖之作 全球公认SQL Server 2005经典著作,囊括大量鲜为人知的技术内幕,大师智慧、专家经验尽览无余。 本系列图书中文版得到了微软...
详细的说明了sql server2005数据库中分区表的工作原理,并详细的介绍了使用方法,特此上传,必备留用。
SQL Server 2005分区表技术的研究与实现.pdf
表分区SQL脚本语句 1,提供了如何创建表分区的完整脚本
详细的说明了sql server2008数据库中分区表的工作原理,并详细的介绍了使用方法,特此上传,必备留用。