📄 100165598.htm
字号:
<td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 325.35pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="434">
<p class="a4" style="MARGIN-LEFT: 10.7pt; LINE-HEIGHT: 15.6pt"><span lang="EN-US">SQL Server</span><span style="FONT-FAMILY: 宋体">默认级别。这个级别可以确保只有第一个事务处理结束后,在第二个事务处理中才能访问第一个事务处理写入的数据</span><span lang="EN-US"> </span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 110.65pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="148">
<p class="a4" style="MARGIN-LEFT: 10.7pt; LINE-HEIGHT: 15.6pt"><span lang="EN-US">ReadUncommitted</span></p>
</td>
<td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 325.35pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="434">
<p class="a4" style="MARGIN-LEFT: 10.7pt; LINE-HEIGHT: 15.6pt"><span style="FONT-FAMILY: 宋体">即使一个事务处理还没有处理完数据,也允许另一个事务处理从数据库中读取数据。例如,如果两个用户在访问同一个数据库,第一个用户插入一些数据,但没有完成事务处理</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">通过</span><span lang="EN-US">Commit</span><span style="FONT-FAMILY: 宋体">或</span><span lang="EN-US">Rollback</span><span style="FONT-FAMILY: 宋体">方法</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">,第二个用户把它们的独立级别设置为</span><span lang="EN-US">ReadUncommitted</span><span style="FONT-FAMILY: 宋体">,因此可以访问数据</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 110.65pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="148">
<p class="a4" style="MARGIN-LEFT: 10.7pt; LINE-HEIGHT: 15.6pt"><span lang="EN-US">RepeatableRead</span></p>
</td>
<td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 325.35pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="434">
<p class="a4" style="MARGIN-LEFT: 10.7pt; LINE-HEIGHT: 15.6pt"><span style="FONT-FAMILY: 宋体">这个级别扩展了</span><span lang="EN-US">ReadCommitted</span><span style="FONT-FAMILY: 宋体">级别,如果在事务处理中使用了相同的语句,无论是否有其他潜在的数据库更新,总是可以返回相同的数据。这个级别要求对数据进行额外的锁定,这会降低性能。</span></p>
<p class="a4" style="MARGIN-LEFT: 10.7pt; LINE-HEIGHT: 15.6pt"><span style="FONT-FAMILY: 宋体">这个级别可以保证,对于初始查询的每一行,都不会修改数据,但允许显示“假想</span><span lang="EN-US">(phantom)</span><span style="FONT-FAMILY: 宋体">”行<span style="LETTER-SPACING: -1pt">——</span></span><span style="LETTER-SPACING: -1pt"> </span><span style="FONT-FAMILY: 宋体">这些行是在进行事务处理时,由另一个事务处理插入的全新数据行</span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p class="a4" style="MARGIN-LEFT: 10.7pt; WORD-BREAK: break-all; LINE-HEIGHT: 15.6pt; TEXT-ALIGN: right" align="right"><span lang="EN-US"> </span></p>
<div align="center">
<table class="MsoNormalTable" style="MARGIN-LEFT: 0.35pt; WIDTH: 436pt; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" width="581" border="1">
<tbody>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 1.4pt; WIDTH: 110.65pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="148">
<p class="a2" style="LINE-HEIGHT: 15.6pt"><span style="FONT-FAMILY: 黑体">独</span> <span style="FONT-FAMILY: 黑体">立</span> <span style="FONT-FAMILY: 黑体">级</span> <span style="FONT-FAMILY: 黑体">别</span></p>
</td>
<td style="PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 325.35pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="434">
<p class="a2" style="LINE-HEIGHT: 15.6pt"><span style="FONT-FAMILY: 黑体">说</span><span lang="EN-US"> </span><span style="FONT-FAMILY: 黑体">明</span></p>
</td>
</tr>
<tr>
<td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 110.65pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="148">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Serializable</span></p>
</td>
<td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 325.35pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="434">
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">这是最“高级”的事务处理级别,对数据库中的数据进行序列化的访问。利用这种独立级别,不会显示假想行,所以在序列化的事务处理中使用的</span><span lang="EN-US">SQL</span><span style="FONT-FAMILY: 宋体">语句总是检索相同的数据。</span></p>
<p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">序列化事务处理对性能的负面影响不应低估,如果肯定不需要这个独立级别,最好不要加上它</span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">SQL Server</span><span style="FONT-FAMILY: 宋体">的默认独立级别</span><span lang="EN-US">ReadCommitted</span><span style="FONT-FAMILY: 宋体">是数据一致性和数据可用性的一种很好的折衷,因为它比</span><span lang="EN-US">RepeatableRead </span><span style="FONT-FAMILY: 宋体">或</span> <span lang="EN-US">Serializable</span><span style="FONT-FAMILY: 宋体">模式中需要的数据锁定都少。但是,有时应提高独立级别,这样在</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">中,才能用一种非默认的级别开始事务处理。使用哪个级别没有硬性规则,全凭经验。</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">注意:</span></p>
<p class="a1" style="FTEL: 21.45pt"><span style="FONT-FAMILY: 楷体_GB2312">如果当前使用的是不支持事务处理的数据库,应转而使用支持它的数据库。一旦我们成为可以完全信任的雇员,且拥有错误数据库的全部访问权限,就可能试键入</span><span lang="EN-US">id=99999</span><span style="FONT-FAMILY: 楷体_GB2312">以删除对应的错误,但实际上输入的是</span><span lang="EN-US"><</span><span style="FONT-FAMILY: 楷体_GB2312">而不是</span><span lang="EN-US">=</span><span style="FONT-FAMILY: 楷体_GB2312">,此时会删除整个错误数据库,这可不是我们希望的。幸好</span><span lang="EN-US">I.S.</span><span style="FONT-FAMILY: 楷体_GB2312">小组每天晚上都会备份该数据库,可以恢复它,但使用回滚命令会更简单。</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165597.htm">上一页</a> <a href="index.html">首页</a> <a href="100165599.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165598.htm'><font color='red'>21.2.2 事务处理</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165595.htm'>21.1.3 数据库特定的类</a></div><div style='float:right;width:49%'>·<a href='100165596.htm'>21.2 使用数据库连接</a></div><div style='float:left;width:49%'>·<a href='100165597.htm'>21.2.1 高效地使用连接</a></div><div style='float:right;width:49%'>·<a href='100165599.htm'>21.3 命令</a></div><div style='float:left;width:49%'>·<a href='100165600.htm'>21.3.1 执行命令</a></div><div style='float:right;width:49%'>·<a href='100165601.htm'>21.3.2 调用存储过程</a></div></div>
</div>
</div>
</div>
<!-- 评论 -->
<!-- 今日推荐 -->
</div>
<!-- 页脚 -->
<div id="foot">
<img src="../../book/readbook.aspx@node=5598&bookid=16&bookname=21.2.2++_25ca_25c2_25ce_25f1_25b4_25a6_25c0_25ed" alt="" width="0" height="0" />
<style>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -