Sybase SQL Server日志问题普及
2010-06-19 15:12:44 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

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进行 备份和清除。
更多精彩
赞助商链接