简单恢复模式下的日志full问题处理
数据库工作在简单恢复模式的时候,在SQL SEVER唤醒检查点线程并运行的时候,它的事务日志被截断(即:所有的没有包含任何活动事务记录的虚拟日志被标记为可重用),而检查点线程在以下三种情况下会被唤醒,1.恢复的时间间隔阈值被足够多的日志记录超过。2.你手工运行了CHECKPOINT命令。3.事物日志已经达到了70%满。
如果没有大型的事务运行,原则上不会出现日志满的情况,当CHECKPOINT进程不能被足够快的唤醒而及时的截断日志,填满日志空间或者在自动增长被启用的情况下导致日志的增长是非常可能发生的事情。
我们的数据库日志最大限制为30G,昨天忽然出现日志满的情况。
作一个实例:当我把日志文件限制在2G时,做以下实例:
create table test(i int, c char(1000))
go
declare @i int
set @i = 1
while @i < 10000
begin
insert test values(@i, 'abc')
set @i = @i + 1
END
DELETE FROM test
删除表时,系统提示日志已满,这主要是系统日志的最大容量无法容纳删除时的文件容量,导致日志满。
处理的方法:1)增加日志最大限度
2)定期进行日志收缩,(事务日志被截断后)

浙公网安备 33010602011771号