转自:https://www.cnblogs.com/gaizai/archive/2011/07/01/2095539.html
二.前言(Introduction)
前段时间在忙数据库的表分区,经常会去上网找资料,但是在找到都是测试表分区的文章,没有实战经验的,所以在我把表分区运用到实际项目中的时候遇到了很多问题。
比如:如何确认分区字段?分区字段与聚集索引的区别与联系?如何存储分区索引?MSDN说交换分区是以秒计算,但执行40G交换分区超时?如何解决分区不断增长的问题?自动化交换分区的陷阱?
这些问题都只能自己在实战中摸索答案,后来我写了几篇关于这些问题的博文,希望对那些需要实战帮助的童鞋有一点提示和帮助。希望大家拍砖。
三.实战说明(In Action)
某生产数据库大小已经有800G了,每天进库数据量大概有150W条记录(数据空间大概为7G),而服务器现在已经没有太多的磁盘空间了,面对这样的问题,我决定对这个数据库的一个大表做表分区,每个分区的ndf文件为40G,一个分区存储1千万条记录。总的记录数保持在1.2亿的数据量。
当需要新的空间来存储新的数据的时候,我们就通过交换表分区来快速删除一个分区的数据,并使用这个分区来存放新进库的数据。
如果每次都人工来执行交换分区的话就太麻烦了,所以我对这个如何进行交换分区删除数据来清理磁盘空间做成自动化。
在执行自动化的作业却也发现了很多问题,在分区文件达到40G的情况,执行交换分区的时间会很长(在正常进数据的情况下执行作业),而对8G的数据文件进行交换分区时速度非常快, 只能先禁用掉MSSQLSERVER网络协议中的TCP/IP的协议;重启SQLServer服务;执行Job进行交换分区;
四.表分区逻辑结构图(Construction)
五.表分区学习流程图(Study Step)