ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL Server重做日志管理机制

SQL Server重做日志管理机制

原创 Linux操作系统 作者:lawzjf 时间:2006-05-11 00:00:00 0 删除 编辑

SQL Server把所有日志文件当作一个连续的文件看待。当需要收缩数据库时,SQL Server也是把所有的文件当作一个文件看待,而不是每个文件单独收缩。除非由于磁盘空间的问题,否则没必要使用多个重做文件。

SQL Server把日志文件又划分为多个Virtual Log Files来管理,每个VLF的大小由SQL Server根据日志文件的大小及增长率来确定。一个VLF可以以下面三种状态存在:

  • active:包含活动的事务
  • recoverable:活动事务之前的VLF,还未进行备份,当恢复数据库时要用到
  • reusable:在完全恢复模式下已经备份,或者在简单模式下,未包含活动事务

哈!VLF多么类似于Oracle日志文件组的日志文件成员。

下面几种情况,SQL Server认为用户没有维护一个完整的日志序列:

  • 在完全恢复模式下,从来未进行全库备份
  • 把数据库设置为简单模式
  • 使用命令backup log with no_log或backup log with truncate_only对日志文件进行了手工截断。

在上面任何一种情况下,SQL Server都会直接重用reusable VLF。在这些情况下,因为可以重用VLF,日志文件一般不会自动增长。当数据库处于完全恢复模式时,如果进行了全库备份,而又没有对日志进行过备份,则日志文件会自动增长(当然要求之前对日志文件进行了自动增长配置)。

查询一个数据库是否处于日志维护模式可以使用下面语句(只适用于SQL Server 2005):

select last_log_backup_lsn from sys.database_recovery_status

如果结果为null,则表示数据库未处于日志维护状态。

在简单恢复模式下,SQL Server会使recoverable VLF的数量保持在一定限度之下,从而使得需要进行实例恢复时,启动时间维持在设定的时间之内(可以使用企业管理器设置服务器启动的时间)。如果recoverable VLF超过这个限制,则checkpoint进程会启动起来,把相应dirty page写入磁盘,并把recoverable VLF写入日志文件。

SQL Server的完全恢复模式及简单恢复模式,类似于Oracle的归档与非归档模式,但是SQL Server的日志归档(即日志备份)要手工去做,或者用作业设置为自动日志备份,显然Oracle归档模式的智能化程度高多了。  


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-152537/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-18

  • 博文量
    279
  • 访问量
    941033