
共享锁:共享锁是读锁,是在执行读取 *** 作的时候创建的。如果事务 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 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)