导航

上海网站建设

专业的网站建设,上海网站建设中心,我们有最专业的团对与最优秀的网站设计人才,选择我们就是选择成功!

« 如何提高网站的PR值Sqlserver如何得到汉字的声母 »

MSSQLServer的事务日志简介一览

DIV class=guanggao><SPAN id=contentAdv></SPAN></DIV>(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。
<P>  交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。每个数据库都拥有至少一个交易日志以及一个数据文件。 </P>
<P>  出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。这可以防止那些中断的交易修改数据文件。 </P>
<P>  维护交易日志 </P>
<P>  因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。这两种情况都会导致数据库停止工作。 </P>
<P>  对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。 </P>
<P>  截除过程发生在备份或将旧标记点标为非活动状态时,它使得旧的交易记录可以被覆盖,但这并不会减少交易日志实际占用的磁盘空间。就算不再使用日志,它依然会占据一定的空间。因此在维护时,还需要对交易日志进行压缩。压缩交易日志的方法是删除非活动记录,从而减少日志文件所占用的物理<a class="channel_keylink" href="http://www.itbulo.com/hardware/cpu/" target="_blank">硬盘</a>空间。 </P>
<P>  通过使用DBCC SHRINKDATABASE语句可以压缩当前数据库的交易日志文件,DBCC SHRINKFILE语句用来压缩指定的交易日志文件,另外也可以在数据库中激活自动压缩操作。当压缩日志时,首先会将旧记录标记为非活动状态,然后将带有非活动标记的记录彻底删除。根据所使用的压缩方式的不同,你可能不会立即看到结果。在理想情况下,压缩工作应该选在系统不是非常繁忙的时段进行,否则有可能影响数据库性能。</P>
<P></p><p align='center'><b><font color='red'>[1]</font> <a href='http://edu.itbulo.com/200705/115414_2.htm'>[2]</a> <a href='http://edu.itbulo.com/200705/115414_3.htm'>[3]</a> <a href='http://edu.itbulo.com/200705/115414_2.htm'>下一页</a> </b></p><script language='javascript' src='http://www.iTbulo.com/gg/200703/79.js'></script></td>
</tr>
</table><!--c-pip文章正文中间240*200--><SPAN id=span_ad3>
<SCRIPT language=JavaScript>
document.write("<script src=\"http://www.iTbulo.com/gg/200703/78.js\"><\/script>");</SCRIPT>
</SPAN>
<SCRIPT>
document.getElementById("contentAdv").innerHTML=document.getElementById("span_ad3").innerHTML;
document.getElementById("span_ad3").innerHTML="";
</SCRIPT>
</td>
<td width="1" valign="top" bgcolor="#A8A8A8"></td>
<td width="173" valign="top" bgcolor="F3F3F3">
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td height="21" align="center" valign="middle" bgcolor="DFDFDF"><strong>文章搜索</strong></td>
</tr>
<tr>
<td height="2" bgcolor="A3A3A3"></td>
</tr>
<form method="Get" name="SearchForm" action="/Search.asp" target="_blank"><TR>
<TD height="40" align=center><input name="Field" type="hidden" id="Field" value="Title"><INPUT name=Keyword id="Keyword" size=16> <INPUT type=submit value=搜索 name=submit onClick="if(this.form.Keyword.value=='') {alert('请输入关键字');return false;}"></TD></TR></FORM>
<tr>
<td height="21" align="center" valign="middle" bgcolor="DFDFDF"><strong>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog .Templete from Google黑板报

Copyright 上海网站建设 www.shwebc.com. Some Rights Reserved.