<p></p>
<div>
<span>Oracle</span><span>中的锁:</span>
</div>
<div class="O1"><span>锁是数据库用来控制共享资源并发访问的机制。</span></div>
<div class="O1"><span>锁用于保护正在被修改的数据</span></div>
<div class="O1"><span>直到提交或回滚了事务之后,其他用户才可以更新数据</span></div>
<div class="O1"></div>
<div class="O1">锁的特性:</div>
<div class="O1"><span>
<div><span>一致性 </span></div>
<div class="O1"><span>一次只允许一个用户修改数据</span></div>
<div><span>完整性 </span></div>
<div class="O1"><span>为所有用户提供正确的数据。如果一个用户进行了修改并保存,所做的修改将反映给所有用户</span></div>
<div><span>并行性 </span></div>
<span>允许多个用户访问同一数据</span></span></div>
<div class="O1"></div>
<div class="O1">当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。</div>
<div class="O1">在数据行上只有X锁(排他锁)。在 Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。</div>
<div class="O1"></div>
<div class="O1">
<div><span>行级锁</span></div>
<div class="O1"><span>对正在被修改的行进行锁定,其他用户可以访问除被锁定的行以外的行</span></div>
<div class="O1">
<span>在使用</span><span>insert</span><span>,</span><span>delete</span><span>,</span><span>update</span><span>,</span><span>select…for </span><span>upadte</span><span>语句时,</span><span>Oracle</span><span>会自动应用行级锁</span>
</div>
<div class="O1">
<span>Select…for update</span><span>语句允许用户一次锁定多条记录进行更新,可以限制用户等待的时间及防止无限期等待</span>
</div>
<div class="O1">
<span>用户必须通过</span><span>commit</span><span>或</span><span>rollback</span><span>语句释放锁</span>
</div>
<div><span>
</span></div>
<div><span>表级锁</span></div>
<div class="O1"><span>将整个表锁定</span></div>
<div class="O1">
<span>Lock table </span><span>表名 </span><span>in share mode;</span>
</div>
</div>
<div class="O1"><span><br></span></div>
<p></p>
<div>
<span>Oracle</span><span>中的锁:</span>
</div>
<div class="O1"><span>锁是数据库用来控制共享资源并发访问的机制。</span></div>
<div class="O1"><span>锁用于保护正在被修改的数据</span></div>
<div class="O1"><span>直到提交或回滚了事务之后,其他用户才可以更新数据</span></div>
<div class="O1"></div>
<div class="O1">锁的特性:</div>
<div class="O1"><span>
<div><span>一致性 </span></div>
<div class="O1"><span>一次只允许一个用户修改数据</span></div>
<div><span>完整性 </span></div>
<div class="O1"><span>为所有用户提供正确的数据。如果一个用户进行了修改并保存,所做的修改将反映给所有用户</span></div>
<div><span>并行性 </span></div>
<span>允许多个用户访问同一数据</span></span></div>
<div class="O1"></div>
<div class="O1">当Oracle 执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁包括了SS、SX、S、X 等多种模式,在数据库中用0-6来表示。不同的SQL操作产生不同类型的TM锁。</div>
<div class="O1">在数据行上只有X锁(排他锁)。在 Oracle数据库中,当一个事务首次发起一个DML语句时就获得一个TX锁,该锁保持到事务被提交或回滚。当两个或多个会话在表的同一条记录上执行 DML语句时,第一个会话在该条记录上加锁,其他的会话处于等待状态。当第一个会话提交后,TX锁被释放,其他会话才可以加锁。</div>
<div class="O1"></div>
<div class="O1">
<div><span>行级锁</span></div>
<div class="O1"><span>对正在被修改的行进行锁定,其他用户可以访问除被锁定的行以外的行</span></div>
<div class="O1">
<span>在使用</span><span>insert</span><span>,</span><span>delete</span><span>,</span><span>update</span><span>,</span><span>select…for </span><span>upadte</span><span>语句时,</span><span>Oracle</span><span>会自动应用行级锁</span>
</div>
<div class="O1">
<span>Select…for update</span><span>语句允许用户一次锁定多条记录进行更新,可以限制用户等待的时间及防止无限期等待</span>
</div>
<div class="O1">
<span>用户必须通过</span><span>commit</span><span>或</span><span>rollback</span><span>语句释放锁</span>
</div>
<div><span>
</span></div>
<div><span>表级锁</span></div>
<div class="O1"><span>将整个表锁定</span></div>
<div class="O1">
<span>Lock table </span><span>表名 </span><span>in share mode;</span>
</div>
</div>
<div class="O1"><span><br></span></div>
<p></p>
本文深入解析Oracle数据库中的锁机制,包括锁的作用、类型及其在确保数据一致性和完整性方面的重要性。探讨了TM锁和TX锁的工作原理,以及如何通过行级锁和表级锁实现并发控制。
211

被折叠的 条评论
为什么被折叠?



