APP下载

DB2事务日志行为分析及对策

2018-03-21

数字通信世界 2018年10期
关键词:磁盘事务日志

柴 新

(江苏电力信息技术有限公司,南京 210024)

1 引言

DB2数据库是广泛使用的大型关系型数据库,事务日志在数据库运行中扮演着非常重要的角色,没有事务日志的参与,DB2数据库就无法保证数据的一致性和可恢复性。数据库中运行的事务会耗用日志存储空间,如果有长久未提交事务或数据修改量巨大的大事务,容易出现事务日志空间被耗尽的现象,本文提出了针对性的防范措施。

2 什么是事务日志

所谓数据库的一致性,就是当数据库崩溃恢复或前滚到某一个时间点时,数据库能够保证已经提交事务的数据都被写入磁盘,而所有未提交和回滚事务都被撤销。为了保障数据的一致性,数据库需要有一种机制提供以下功能:

(1)若某事务回滚,数据库需要知道被修改前的旧数据。

(2)数据库发生崩溃时,保存在缓冲池中的已提交事务的数据可能还没有写入物理磁盘,磁盘上的数据还是旧数据,如何保证已提交事务的数据不丢失?

在DB2中,正是事务日志提供了以上问题的解决方案。所谓事务日志,就是在一个事务被提交之后,保证该事务里修改后的数据能够被写入永久存储介质的一种机制,目的在于保证提交事务包含的数据不会丢失。为了提高系统的性能,DB2采用日志优先算法,也就是先把记录写入日志文件,后将数据从缓冲池使用异步方式写入磁盘。

3 循环日志和归档日志

DB2使用主日志和辅助日志文件来控制、分配日志存储空间,当数据库启动后,就预先分配了规定数目的主日志文件,而辅助日志文件是当主日志文件的空间被耗尽后进行按需分配,当数据库不再需要时会向操作系统释放空间。

DB2有两种方式来使用日志文件:循环日志模式、归档日志模式。循环日志模式就是对多个事务日志文件进行循环使用,每个事务日志文件的内容会不断被新日志条目数据所覆盖,而归档日志模式与循环日志模式的最大区别就是事务日志文件的内容在被新日志条目覆盖之前首先被进行保存,这一保存的过程就被称之为归档,归档日志模式保留了数据库所有数据更改活动的完整轨迹,因而能够支持时间点前滚恢复,也就是使用一个数据库的完全备份映像加上其后的所有归档日志文件能将数据库恢复到故障前时刻,并且归档日志模式能够支持数据库的在线备份。循环日志模式只能支持崩溃恢复和版本恢复,不能支持前滚恢复,并且只能支持数据库离线备份,不能进行在线备份。所以,从以上对比可以看出,归档日志模式更能有效地保护数据库安全,在生产环境中,基本上都是配置为归档日志模式,用在线备份加归档日志的方式来保护数据库安全。

归档模式下,DB2在以下情况对事务日志文件进行归档:(1)事务日志文件被写满,即使事务日志文件仍然含有未提交事务;(2)事务日志文件未被写满,但发生以下任意一种情况:数据库被取消激活、发出archive log命令、在线备份结束等。

4 限制事务消耗事务日志空间的对策

使用DB2数据库的信息系统,若事务使用不当,会对数据库运行造成严重影响,妨碍数据库的并发性和可用性。包括下面两种场景:

(1)未提交事务。一个事务中的sql语句执行结束后,应马上对事务进行提交或回滚,以释放日志空间,但是如果在sql语句执行结束后没有提交或回滚事务,那么这种事务就可被称为未提交事务,随着时间推移系统中其他事务的进行,事务日志在不断进行切换,其可用空闲空间会不断减少,未提交事务持续的时间越久,其对数据库造成的危害就可能会越高,即使该事务是一个修改数据量很小的小事务,其原因是包含着未提交事务的事务日志文件因不能被覆盖重写,造成数据库无可用存储空间记录新的事务数据而停止数据处理,这时即使运行一个修改数据量很小的sql语句,DB2也会报出SQL0964C事务日志满的错误。

(2)大事务。大事务是指修改数据量很大的事务,由于数据修改前的旧映像要保存在事务日志中,可能会因事务日志文件没有足够空间存储被修改数据的旧映像而发生SQL0964C事务日志满的错误。当这种情况发生时,大事务会回滚,并且新事务不能运行,直至大事务回滚完成释放了日志空间。

以上两种情况都会严重影响数据库的可操作行或并发性,DB2的配置参数num_log_span可用来防范以上情况发生。它的作用是限制一个事务所跨越的日志文件的数量,当超过设置值时,事务被DB2系统自动中断,事务回滚,日志释放,从而保证数据库继续有空闲的日志空间来记录新的事务数据。一般来说,事务设计要遵循数据修改量小、及时提交等原则,以能保证数据库不会因为事务日志而出现故障。

5 结束语

事务日志对DB2数据库有非常重要的作用,本文以DB2数据库事务日志为研究对象,说明了不同场景下事务日志的不同配置模式,及应对事务日志空间耗尽的防范方法,对基于DB2开发的信息系统稳定运行,希望对DBA能起到帮助作用。

猜你喜欢

磁盘事务日志
基于分布式事务的门架数据处理系统设计与实现
一名老党员的工作日志
扶贫日志
河湖事务
解决Windows磁盘签名冲突
修改磁盘属性
雅皮的心情日志
基于OCC-DA-MCP算法的Redis并发控制
游学日志
磁盘组群组及iSCSI Target设置