关于新增分区过程中遇到的问题(续)
2016-01-05 15:34
176 查看
昨天说到新增了分区,我们实现了自动批量新增文件和文件组.大家可以考虑后续做成JOB定期执行,每个月月底执行一下,新增三个月之后的分区,这样一旦有JOB失败能够有缓冲的时间.
今天我们了看看删除分区数据的事情.
昨天我们说存在定期删除过期数据的JOB,所以如果分区太长时间没有新建,将造成不可挽回的错误:删除数据.
那这个定期删除过期数据的是怎么做的呢.
首先,对于分区表来说,每个分区规则制定后,所有符合规则的数据会存放在固定的逻辑文件组中,而这个(这些)文件组会对应于某一个具体的物理文件.
而某个分区方案是可以对应多个分区表的,所以,我们就可以新建一个结构和分区方案与原表一样的新表(归档表).
这样可以通过下面的SQL脚本来将旧表中某个指定分区的数据滑动到新表中,这时候这部分数据就属于新表了,然后执行truncate table清除新表就可以删除这个分区中的全部数据了.
定时JOB中部署上述的作业就可以实现相关自动清理历史数据的效果.
其实我还关心一个事情就是,被清理掉的分区中的数据是没有了,但是文件和分区方案边界还是一直存在,所以在后续会越来越多的产生不在使用的小文件,虽然小但会逐渐影响系统的响应速度.
所以我使用如下方法去定期清理相关文件:
使用昨天的循环脚本,执行到指定的归档日期即可.
然后执行下面的脚本删除对应的文件和文件组
PS:所有有办法用JOB实现的自动新增和自动删除的工作都是有规律可循的.比如这两篇的文件名或者文件组名或者分区方案及分区函数均以日期为区分.所以在新增和清理时都可以根据日期来处理.
今天我们了看看删除分区数据的事情.
昨天我们说存在定期删除过期数据的JOB,所以如果分区太长时间没有新建,将造成不可挽回的错误:删除数据.
那这个定期删除过期数据的是怎么做的呢.
首先,对于分区表来说,每个分区规则制定后,所有符合规则的数据会存放在固定的逻辑文件组中,而这个(这些)文件组会对应于某一个具体的物理文件.
而某个分区方案是可以对应多个分区表的,所以,我们就可以新建一个结构和分区方案与原表一样的新表(归档表).
这样可以通过下面的SQL脚本来将旧表中某个指定分区的数据滑动到新表中,这时候这部分数据就属于新表了,然后执行truncate table清除新表就可以删除这个分区中的全部数据了.
use [DataBase] GO DECLARE @PartitionId INT = DATEDIFF(DAY,'2015-04-01','2015-12-10')+2 select @PartitionId ALTER TABLE OldTable SWITCH PARTITION @PartitionId TO NewTable PARTITION @PartitionId GO --truncate table NewTable
定时JOB中部署上述的作业就可以实现相关自动清理历史数据的效果.
其实我还关心一个事情就是,被清理掉的分区中的数据是没有了,但是文件和分区方案边界还是一直存在,所以在后续会越来越多的产生不在使用的小文件,虽然小但会逐渐影响系统的响应速度.
所以我使用如下方法去定期清理相关文件:
ALTER PARTITION FUNCTION [parfunDay]() MERGE RANGE ('2015-04-01')
使用昨天的循环脚本,执行到指定的归档日期即可.
然后执行下面的脚本删除对应的文件和文件组
ALTER DATABASE [Database] REMOVE FILE [PartitionDB_FG-2015-04-01] ALTER DATABASE [Database] REMOVE FILEGROUP [PartitionDB_FG-2015-04-01]
PS:所有有办法用JOB实现的自动新增和自动删除的工作都是有规律可循的.比如这两篇的文件名或者文件组名或者分区方案及分区函数均以日期为区分.所以在新增和清理时都可以根据日期来处理.
相关文章推荐
- for循环输出九九乘法表
- 二维数组模拟手机翻转
- [CentOS 0010] CentOS 配置mysql允许远程登录
- erlangCPU异常波动debug过程
- Failure [INSTALL_FAILED_DEXOPT]解决方案
- Application Structure(应用程序的结构)
- Volley请求源码解读 (1) ---无缓存请求
- Volley请求源码解读 (1) ---无缓存请求
- android java文件调用.so文件
- 字段计算器通过python脚本完成要素节点坐标信息提取到属性字段中
- 深度学习与计算机视觉系列(1)_基础介绍
- cocos2d-js v3.6 关于处理图片锯齿、不清楚的处理方法
- iOS性能优化
- block_read和block_write函数 设备块号
- 怎样学习大数据能达能超出你的预想?
- Android 使用OkHttp
- 活动组件(六):活动的启动模式
- oracle创建表空间
- 打正式包混淆后fastjson报错ClassCastException和其他bean报错崩溃问题
- 有关Apex里面的关键字的使用