美文网首页
2. 事务锁与语句锁冲突吗?

2. 事务锁与语句锁冲突吗?

作者: 剑心折手 | 来源:发表于2019-04-14 12:33 被阅读0次

数据库只对原子操作(Sql语句与事务)加锁。大体如下:

问题:事务本来包含多个单句,那么事务加了锁,单句还要加吗?

解答:这是个重要的问题,在数据库的实际设计中,的确没有划清界线,有了事务锁了,就不要语句锁了。在事务中,我们称事务锁为大锁,语句锁为小锁;而且只有共享锁分大小,而排斥锁不分(因为都是大锁)。继续往下看,就明白了。


三种级别行锁都来一遍,就清楚了。

一、读未提交(Read Uncommitted)。读不加任何锁,写加共享锁。

二、读已提交(Read committed)。读加小共享锁,写加排斥锁。(这一点特别重要)。这个级别是默认的,无论对于事务还是语句。

(注)在上面两条Select语句之间是没有锁的,所以其它查询是可以进行获取锁而改变数据的。这一点是读已提交级别的核心。这也是此级别会产生不可重复性读的问题的原因。

三、可串行读(Repeatable Read)。读加大共享锁,写加排斥锁。(这一点特别重要)

可见:

1、数据库两个写操作之间,必须串行,即使在最低级别。

2、数据库两个读操作之间,必须并行,即使在最高级别。

3、数据库的写操作,必须加锁,即使在最低级别。也就保证了写的独立性。

4、数据库的读操作,永远不会加排斥锁,保证了读的共享性。

相关文章

  • 2. 事务锁与语句锁冲突吗?

    数据库只对原子操作(Sql语句与事务)加锁。大体如下: 问题:事务本来包含多个单句,那么事务加了锁,单句还要加吗?...

  • 浅析mysql的锁

    目录:1.锁的定义与分类(表、行、页)2.锁相关的语句(查看锁)3.mysql事务4.乐观锁和悲观锁5.数据库死锁...

  • 2019-03-18文章精选

    1.深入理解 MySQL ——锁、事务与并发控制 各种锁、事务与并发,写得很详细。 2.剖析分布式锁 redis部...

  • MYSQL事务

    常用语句 MYSQL事务,锁表 事务控制语句 事务的隔离级别 隔离级别描述产生风险READUNCOMMITTED ...

  • mysql乐观锁

    排他锁:排他锁通过在事务中使用select ...for update语句来实现,排他锁会在当前行加一个行级锁,在...

  • mysql锁

    共享锁与排他锁 共享锁(读锁):其他事务可以读,但不能写。 排他锁(写锁) :其他事务不能读取,也不能写。 粒度锁...

  • MySQL 锁

    锁的类别 1.表锁(MyISAM) 2.行锁(InnoDB) S 锁:共享锁,允许事务读取一条数据 X锁:排他锁,...

  • mysql锁(十)innodb下的悲观锁和乐观锁

    ****悲观锁与乐观锁****悲观锁,也叫悲观并发控制,当事务A对某行数据应用了锁,并且当这个事务把锁释放后,其他...

  • 你应该知道的

    本次更新:20180319一、Mysql:1.S锁(共享锁)、X锁(排它锁):select语句默认加S锁;2.聚簇...

  • 锁-0

    一.事务是通过锁来绑定多条执行语句的 二.mysql 锁粒度是什么?详解:https://zhidao.baidu...

网友评论

      本文标题:2. 事务锁与语句锁冲突吗?

      本文链接:https://www.haomeiwen.com/subject/rzmjwqtx.html