合并分区(merge range)对事务日志的影响
分区维护作业执行失败,错误信息如下:
数据库 'XXX' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。 [SQLSTATE 42000] (错误 9002) 语句已终止。 [SQLSTATE 01000] (错误 3621). 该步骤失败。
查看 sys.databases 数据库恢复模式为SIMPLE,日志重用等待为NOTHING
提取分区维护作业代码,取其中合并分区语句,直接在查询窗口执行,并在另一窗口查看日志使用情况
日志使用很快涨到100%,合并分区语句终止,之后马上回落
查看数据库文件使用情况
主数据文件和日志文件保存在F盘,两文件大小接近200G,而F盘的总大小只有200G
就是说,合并分区时产生了"大量"事务,填满事务日志,日志文件虽然有设置自动增长,但F盘的可用空间(8.94M)显然不够其一次增长(200M/次)
最终导致语句异常终止,在ERRORLOG中会有9002错误
合并分区为什么会生成如此多的事务?
TableA、TableA_Trun建立在同一个分区方案(分区函数采用的是RANGE RIGHT)之上。过期数据删除作业每天将TableA中33天前的数据Switch到TableA_Trun;分区维护作业每十天合并35天前的分区,并新增一个月后的分区。当前库中有10张表采用此方案
TableA、TableA_Trun的数据分布情况

TableA_Trun中为什么还有8月7、8、9号的数据(Switch分区每天都会操作,先清空Trun表,然后Switch33天前的数据)。核实是上周五调整某些表,导致过期数据删除作业在9月10、11、12号执行失败,也就是今天此作业执行前TableA表中还有8月7、8、9号数据,之后进行Switch分区,就将8月7、8、9、10号数据都Switch到TableA_Trun表中。
分区维护作业对应的合并语句
alter partition function [Fun_Date]() merge range ('')
alter partition function [Fun_Date]() merge range ('')
alter partition function [Fun_Date]() merge range ('')
对于第一条合并语句,它要合并2016-08-07,由于分区函数使用RANGE RIGHT,它属于右边界的(partition_number=2)。参考听风吹雨博客SQL Server 合并(删除)分区解惑
结论:删除的这个边界值(boundary_value)属于哪个分区,那么就会删除这个分区,再向邻近的分区合并。邻近的意思是以这个边界值为临界点的两个分区。
就是说删除2016-08-07边界值,会删除第二个分区,第二个分区中的数据向第一个分区合并。由于TableA_Trun(10张)在第二个分区都有大量数据,导致合并时生成大量日志。
解决方法
1、清空TableA_Trun表,再合并分区
2、收缩数据文件,释放磁盘空间,再合并分区
显然方法1影响小,且易于操作。我也是优先采用此方法合并了分区。
收缩数据文件可能遇到的问题
1、收缩数据文件引起事务日志增长,不幸导致事务日志已满。最初收缩的量调小点(比如200M/次),如果能释放空间给操作系统,基本就没什么问题。
2、任何少量的收缩都导致事务日志已满。只能在有足够剩余空间的其他磁盘为数据库添加日志文件,待收缩完成后,再删除多余的日志文件。
合并分区(merge range)对事务日志的影响的更多相关文章
- SQL Server中的事务日志管理(3/9):事务日志,备份与恢复
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- 第16周翻译:SQL Server中的事务日志管理,级别3:事务日志、备份和恢复
源自: http://www.sqlservercentral.com/articles/Stairway+Series/73779/ 作者: Tony Davis, 2011/09/07 翻译:刘琼 ...
- SQL Server中的事务日志管理(9/9):监控事务日志
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据
分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 今天开发找我,说数据库insert不进数据,叫我看一下 他发了一个截图给我 然后我登录上服务器,发现了可疑的地方,而且这个数据库之前 ...
- (转)解释一下SQLSERVER事务日志记录
本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 解释一下SQLSERVER事务日志记录 大家知道在完整恢 ...
- SQL Server中的事务日志管理(7/9):处理日志过度增长
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- SQL Server中的事务日志管理(8/9):优化日志吞吐量
当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...
- 解释一下SQLSERVER事务日志记录
解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...
- 内存中OLTP(Hekaton)里的事务日志记录
在今天的文章里,我想详细讨论下内存中OLTP里的事务日志如何写入事务日志.我们都知道,对于你的内存优化表(Memory Optimized Tables),内存中OLTP提供你2个持久性(durabi ...
随机推荐
- Spring中文文档
前一段时间翻译了Jetty的一部分文档,感觉对阅读英文没有大的提高(*^-^*),毕竟Jetty的受众面还是比较小的,而且翻译过程中发现Jetty的文档写的不是很好,所以呢翻译的兴趣慢慢就不大了,只能 ...
- UC浏览器 分享到朋友圈和微信好友 分类: JavaScript 2015-04-28 14:45 615人阅读 评论(1) 收藏
用手机UC浏览器访问新浪微博,会注意到有这样的两个分享按钮: 在手机端浏览器里,点击分享按钮,就可以启动微信客户端并分享到微信.研究了下其源代码,存在这样的一个js:http://mjs.sinaim ...
- iOS--异步下载
#import "ViewController.h"#import "UIImageView+WebCache.h"@interface ViewControl ...
- CAS登录时不仅仅需要用户名来确认身份的情况
最近在帮别人搞CAS,积累点经验 问题一:登录需要用户名和部门名称唯一确定一个用户,并将userid作为唯一标示. 在UsernamePasswordCredentials中添加userid 修改Qu ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
- ZeroMQ接口函数之 :zmq_msg_data - 返回消息内容的指针
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_data zmq_msg_data(3) ØMQ Manual - ØMQ/3.2.5 Name zmq ...
- java分享第十一天(接口测试)
HTTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求( post请求时有一个选项是form-data,或者raw,使用raw可以请求 ...
- sqlserver2008 函数1
SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) select ascii('abc') 返回 97 返 ...
- HTML 5 音频(audio)
audio 元素支持三种音频格式 IE 9 Firefox 3.5 Opera 10.5 Chrome 3.0 Safari 3.0 Ogg Vorbis √ √ √ MP3 √ √ ...
- java并发编程(十一)线程间的通信notify通知的遗漏
notify通知的遗漏很容易理解,即threadA还没开始wait的时候,threadB已经notify了,这样,threadB通知是没有任何响应的,当threadB退出synchronized代码块 ...