共享锁 & 排它锁 & 意向锁

共享锁 & 排它锁 & 意向锁,第1张

共享锁:共享锁是读锁,是在执行读取 *** 作的时候创建的。如果事务 T 对 数据 A 添加了共享锁,那么其他事务只能再对数据 A 添加 共享锁而不能添加其他类型的锁,对于已经添加了共享锁的事务,只能执行读 *** 作,而不能执行写 *** 作。共享锁的使用方式需要在查询语句后面添加 LOCK IN SHARE MODE

排它锁:排它锁是写锁,如果事务 T 对 数据 A 添加排它锁,那么其他事务就不能再添加其他类型的锁,已经添加了排它锁的事务,既能执行读 *** 作也能执行写 *** 作,排它锁的使用方式需要在查询语句中添加 FOR UPDATE

意向锁是表级锁,它主要用于在一个事务中表明下一行将要被请求的锁类型,INNODB 中的有两个表锁:意向共享锁、意向排它锁

意向共享锁:表明事务准备给数据行添加一个共享锁,一个数据行在被添加共享锁之前首先需要获取当前表的意向共享锁

意向排它锁:表明事务准备给数据行添加一个排它锁,一个数据行在被添加排它锁之前首先需要获取当前表的意向排它锁

意向锁是 INNODB 自动添加的,不需要用户干预

加锁的语句如下:

1

SELECT * FROM 表名 WITH (TABLOCK)

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

1

SELECT * FROM 表名 WITH (NOLOCK)

加锁的解释:

TABLOCK(表锁)

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

不加锁的解释:

NOLOCK(不加锁)

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


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

原文地址:https://54852.com/sjk/10031497.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存