数据库中的封锁机制是什么的主要方法

数据库中的封锁机制是什么的主要方法,第1张

并发控制。

封锁机制是并发控制的主要手段。封锁是使事务对它要 *** 作的数据有一定的控制能力。封锁具有3个环节:第一个环节是申请加锁,即事务在 *** 作前要对它欲使用的数据提出加锁请求;第二个环节是获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权;第三个环节是释放锁,即完成 *** 作后事务放弃数据的控制权。为了达到封锁的目的,在使用时事务应选择合适的锁,并要遵从一定的封锁协议。

基本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。

(1)排它锁

排它锁也称为独占锁或写锁。一旦事务T对数据对象A加上排它锁(X锁),则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁为止。

(2)共享锁

共享锁又称读锁。如果事务T对数据对象A加上共享锁(S锁),其他事务对A只能再加S锁,不能加X锁,直到事务T释放A上的S锁为止。

简单地对数据加X锁和S锁并不能保证数据库的一致性。在对数据对象加锁时,还需要约定一些规则。例如,何时申请X锁或S锁、持锁时间、何时释放等。这些规则称为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。封锁协议分三级,各级封锁协议对并发 *** 作带来的丢失修改、不可重复读取和读“脏”数据等不一致问题,可以在不同程度上予以解决。

加锁的语句如下:

1

SELECT * FROM 表名 WITH (TABLOCK)

这里没有解锁的概念,只有不加锁的概念,语句如下:

1

SELECT * FROM 表名 WITH (NOLOCK)

加锁的解释:

TABLOCK(表锁)

此选项被选中时,SQL Server 将在整个表上置共享锁直至该命令结束。 这个选项保证其他进程只能读取而不能修改数据。

不加锁的解释:

NOLOCK(不加锁)

此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11150128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存