📄 ms sql server数据库事务锁机制分析 __mysql__数据库__技术__中国软考资讯 追求无止境,创意无极限:www_heima21_com.htm
字号:
<P> SQL
Server系统中建议让系统自动管理锁,该系统会分析用户的SQL语句要求,自动为该请求加上合适的锁,而且在锁的数目太多时,系统会自动进行锁升级。如前所述,升级的门限由系统自动配置,并不需要用户配置。
</P>
<P> 在实际应用中,有时为了应用程序正确运行和保持数据的一致性,必须人为地给数据库的某个表加锁。比如,在某应用程序的一个事务操作中,需要根据一编号对几个数据表做统计操作,为保证统计数据时间的一致性和正确性,从统计第一个表开始到全部表结束,其他应用程序或事务不能再对这几个表写入数据,这个时候,该应用程序希望在从统计第一个数据表开始或在整个事务开始时能够由程序人为地(显式地)锁定这几个表,这就需要用到手工加锁(也称显式加锁)技术。
</P>
<P> 在SQL Server
的SQL语句(SELECT、INSERT、DELETE、UPDATE)支持显式加锁。这4个语句在显式加锁的语法上类似,下面仅以SELECT语句为例给出语法:
</P>
<P>SELECT FROM [ WITH ] </P>
<P> 其中,指需要在该语句执行时添加在该表上的锁类型。所指定的锁类型有如下几种: </P>
<P> 1.HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。
</P>
<P> 2.NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。
</P>
<P> 3. PAGLOCK:指定添加页面锁(否则通常可能添加表锁)。 </P>
<P> 4.READCOMMITTED:设置事务为读提交隔离性级别。 </P>
<P> 5.READPAST:
跳过已经加锁的数据行,这个选项将使事务读取数据时跳过那些已经被其他事务锁定的数据行,而不是阻塞直到其他事务释放锁,READPAST仅仅应用于READ
COMMITTED隔离性级别下事务操作中的SELECT语句操作。 </P>
<P> 6.READUNCOMMITTED:等同于NOLOCK。 </P>
<P> 7.REPEATABLEREAD:设置事务为可重复读隔离性级别。 </P>
<P> 8.ROWLOCK:指定使用行级锁。 </P>
<P> 9.SERIALIZABLE:设置事务为可串行的隔离性级别。 </P>
<P> 10.TABLOCK:指定使用表级锁,而不是使用行级或页面级的锁,SQL
Server在该语句执行完后释放这个锁,而如果同时指定了HOLDLOCK,该锁一直保持到这个事务结束。 </P>
<P> 11.TABLOCKX:指定在表上使用排它锁,这个锁可以阻止其他事务读或更新这个表的数据,直到这个语句或整个事务结束。
</P>
<P> 12. UPDLOCK :指定在读表中数据时设置修改锁(update
lock)而不是设置共享锁,该锁一直保持到这个语句或整个事务结束,使用UPDLOCK的作用是允许用户先读取数据(而且不阻塞其他用户读数据),并且保证在后来再更新数据时,这一段时间内这些数据没有被其他用户修改。
</P>
<P> 由上可见,在SQL
Server中可以灵活多样地为SQL语句显式加锁,若适当使用,我们完全可以完成一些程序的特殊要求,保证数据的一致性和完整性。对于一般使用者而言,了解锁机制并不意味着必须使用它。事实上,SQL
Server建议让系统自动管理数据库中的锁,而且一些关于锁的设置选项也没有提供给用户和数据库管理人员,对于特殊用户,通过给数据库中的资源显式加锁,可以满足很高的数据一致性和可靠性要求,只是需要特别注意避免死锁现象的出现。 </P></TD></TR></TBODY></TABLE></DIV></TD></TR>
<TR>
<TD width="100%"></TD></TR>
<TR>
<TD height=28 width="100%">
<P align=center>推荐给朋友 加入收藏 打印 投稿给我们 返回顶部 关闭</P></TD></TR>
<TR>
<TD
background="MS SQL Server数据库事务锁机制分析 __MySQL__数据库__技术__中国软考资讯 追求无止境,创意无极限:www_heima21_com.files/bg_title_long.gif"
height=26 width="100%"> <B><FONT
color=#ffffff> 相关评论</FONT></B></TD></TR><!-- 评论显示 -->
<TR>
<TD width="100%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD vAlign=top width="50%">
<TABLE border=0 cellPadding=0 cellSpacing=0
width="100%">
<TBODY>
<TR>
<TD height=22
width="100%"> 暂时还没有相关评论。</TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width="50%">
<FORM action=review_save.asp method=post>
<TABLE border=0 cellPadding=2 cellSpacing=0
width="100%">
<TBODY>
<TR>
<TD align=right width=60></TD>
<TD height=22><B>发表评论</B></TD></TR>
<TR>
<TD align=right vAlign=top width=60><FONT
color=#ff0000>*</FONT>姓名:</TD>
<TD><INPUT name=Review_Author size=8
value=aofa_909> <FONT
color=#ff0000>*</FONT>密码:<INPUT name=password
size=8 type=password> </TD></TR>
<TR>
<TD align=right vAlign=top width=60>Emial:</TD>
<TD><INPUT name=Review_Email size=19></TD></TR>
<TR>
<TD align=right vAlign=top width=60>主页:</TD>
<TD><INPUT name=Review_Homepage size=31></TD></TR>
<TR>
<TD align=right vAlign=top width=60>OICQ:</TD>
<TD><INPUT name=Review_Oicq size=11></TD></TR>
<TR>
<TD align=right vAlign=top width=60><FONT
color=#ff0000>*</FONT>内容:</TD>
<TD><TEXTAREA cols=29 name=Review_Content rows=5></TEXTAREA></TD></TR>
<TR>
<TD align=right vAlign=top width=60></TD>
<TD><INPUT name=Article_Title type=hidden
value="MS SQL Server数据库事务锁机制分析 "><INPUT
name=Article_ID type=hidden value=10176><INPUT
name=Url type=hidden
value=detail.asp?catalogf=7&catalogs=37&catalogt=0&article_id=10176>
<INPUT name=submit type=submit value=提交> <INPUT name=reset type=reset value=全部重写></TD></TR></TBODY></TABLE></FORM></TD></TR></TBODY></TABLE></TD></TR><!-- 相关文章列表开始 -->
<TR>
<TD width="100%">
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD
background="MS SQL Server数据库事务锁机制分析 __MySQL__数据库__技术__中国软考资讯 追求无止境,创意无极限:www_heima21_com.files/bg_title_long.gif"
height=26 width="100%"> <B><FONT
color=#ffffff> 相关文章</FONT></B></TD></TR>
<TR>
<TD height=18 width="100%"> ·<A
href="http://www.softexam.cn/tech/detail.asp?catalogf=7&catalogs=37&Article_id=10033">MySQL数据库类的定义</A> <FONT
color=#666666>[41]</FONT> <FONT
color=#999999>(2003-11-8 11:33:48)</FONT></TD></TR>
<TR>
<TD height=18 width="100%"> ·<A
href="http://www.softexam.cn/tech/detail.asp?catalogf=7&catalogs=37&Article_id=10034">MySQL数据库类的定义</A> <FONT
color=#666666>[48]</FONT> <FONT
color=#999999>(2003-11-8 11:35:13)</FONT></TD></TR>
<TR>
<TD height=18 width="100%"> ·<A
href="http://www.softexam.cn/tech/detail.asp?catalogf=7&catalogs=37&Article_id=10070">MYSQL初学者使用指南
</A> <FONT color=#666666>[127]</FONT> <FONT
color=#999999>(2003-11-18
13:10:57)</FONT></TD></TR></TBODY></TABLE></CENTER></DIV></TD></TR><!-- 相似文章列表开始 --><!-- 判断是否有相似文章 -->
<TR>
<TD width="100%"><!-- 是否有相似文章结束 --></TD></TR><!-- 是否有相似文章判断结束 -->
<TR>
<TD width="100%"></TD></TR>
<TR>
<TD
width="100%"></TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE>
<CENTER></CENTER></DIV><!------------------------------------------------------ 版权部分 ----------------------------------------------->
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=760>
<TBODY>
<TR>
<TD>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=24 width=760>
<TBODY>
<TR>
<TD align=left bgColor=#000000 class=cssWhite> <A
href="http://www.softexam.cn/about/gb/index.asp"
target=_blank><FONT
color=#ffffff>留言</FONT></A> ©2003-2004 <A
href="http://www.heima21.com/"><FONT
color=#ffffff>Heima21.com</FONT></A> E-mail:<A
href="mailto:webmaster@heima21.com"><FONT
color=#ffffff>webmaster@heima21.com</FONT></A>(109) </TD></TR>
<TR>
<TD bgColor=#c0c0c0
height=2></TD></TR></TBODY></TABLE></CENTER></DIV></TD></TR></TBODY></TABLE></CENTER></DIV></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -