1.逻辑日志文件(VLF)
日志文件实际上有若干逻辑日志文件(VLF)组成,逻辑日志文件的大小由SQL Server根据物理日志文件的大小以及自动增长机制决定. 一个日志文件创建以后通常包含4-16个逻辑日志文件, 日志文件最少可以被收缩到只包含一个VLF.
2.VLF可以处于以下几种状态:
Active: 包含未提交事务
Recoverable: 不包含活跃事务,但尚未被备份
Reusable: 不包含活跃事务, 已经被备份或者数据库不需要维护一个连续的日志备份
Unused: 尚未使用过
3. 可以使用DBCC LOGINFO命令查看 VLF:
FileID: 物理文件的编号
FileSize:
StartOffset:
FseqNo: File Sequence Number, 反应了VLF的逻辑顺序
Status:
4. Automatic Truncation of VLF
一个full database backup + 一个连续的日志文件序列可将数据库恢复到日志文件序列所涵盖的的任意时间点.如果发生如下事件之一,SQl Server认为你不需要维护一个连续的日志文件备份:
使用 backup log with no_log 或者backup log with truncate_only
运行在simple 恢复模式下
从未做过full database backup
满足任一条件, SQL Server就运行在 autotruncate模式下
5.Log Truncate
(1) 将不包含活跃事务的VLF变为reusable状态, 不会改变日志文件的物理大小
(2) truncate操作由checkpoint进程触发,
(3) 什么时候truncate:
第一: 累积的日志超过了recovery interval.
第二: 超过70%的日志文件空间已被使用
(4) 判断一个数据库是否运行在autotruncate模式下
select last_log_backup_lsn from sys.database_recovery_status;
6.Shrink LogFile
DBCC SHRINKDATABASE (pubs)
Shrink database 或者shrink datafile会在日志文件里写入一个shrink point, 但物理文件的大小不会马上发生改变, 直到下一次日志文件备份或者截断
[@more@]