Sybase SQL Server日志问题普及(一)

日期: 2009-01-06 来源:TechTarget中国 英文

  Sybase SQL Server的每一个数据库,无论是系统数据库(master,model, sybsystemprocs, tempdb),还是用户数据库,都有自己的transaction log,每个库都有 syslogs表。Log记录用户对数据库修改的操作,所以如果不用命令清除,log会一直增长直至占满空间。清除log可用dump transaction命令;或者开放数据库选项trunc log on chkpt,数据库会每隔一段间隔自动清除log。管理好数据库log是用户操作数据库必须考虑的一面。

  下面就几个方面谈谈log及其管理:

  一、SQL Server如何记录及读取日志信息

  我们知道,SQL Server是先记log的机制。Server Cache Memory中日志页总是先写于数据页:
  
  Log pages在commit ,checkpoint,space needed时写入硬盘。

  Data pages在checkpoint,space needed时写入硬盘。

  系统在recovery时读每个database的syslogs表的信息,回退未完成的事务 (transaction)(数据改变到事务前状态);完成已提交的事务(transaction)(数据改变为事务提交后的状态)。在Log中记下checkpoint点。这样保证整个数据库系统的一致性和完整性。

  二、Transaction logs和checkpoint进程

  checkpoint命令的功能是强制所有“脏”页(自上次写入数据库设备后被更新过的页)写 入数据库设备。自动的checkpoint间隔是由SQL Server根据系统活动和系统表 sysconfigures中的恢复间隔(recovery interval)值计算出的。通过指定系统恢复所需的时 间总量,恢复间隔决定了checkpoint的频率。

  如果数据库开放trunc log on chkpt选项,则SQL Server在数据库系统执行checkpoint时自动清除log。但用户自己写入执行的checkpoint命令并不清除log,即使trunc log on chkpt 选项开放。只有在trunc log on chkpt选项开放时,SQL Server自动执行checkpoint动作,才能自动清除log 。这个自动的checkpoint动作在SQL Server中的进程叫做checkpoint进程。当trunc log on chkpt选项开放时,checkpoint进程每隔0秒左右清除log,而不考虑recovery interval设置时间的间隔。

  三、Transaction log的大小

  没有一个十分严格的和确切的方法来确定一个数据库的log应该给多大空间。对一个新建的数据库来说,log大小为整个数据库大小的20%左右。因为log记录对数据库的修改,如果修改的动作频繁,则log的增长十分迅速。所以说log空间大小依赖于用户是如何使用数据库的。

  例如:

  ◆update,insert和delete的频率

  ◆每个transaction中数据的修改量

  ◆SQL Server系统参数recovery interval值

  ◆log是否存到介质上用于数据库恢复

  还有其它因素影响log大小,我们应该根据操作估计log大小,并间隔一个周期就对log进行备份和清除。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐