mysql 锁 事务 脏读 不可重复读 幻读

脏读:一个事务A读取到另外一个事务B没有提交的数据,本质是事务B对其他事务可见,未提交的数据被事务A读取了(读的是别人没提交的数据)

不可重复读:同一个事务A读了一条数据读了两次,两次返回的记录数据不一样。本质是事务A多次读取,在多次读取的过程中,其他事务对该数据进行了修改。(读多次过程中别人提交了的数据)

幻读:同一个事务读了两次,两次返回的记录数量不一样。(insert从锁的角度讲,mysql行锁下无法阻塞新增行操作)

read-uncommited(不用)

read-committed解决脏读

repeatable-read解决不可重复读

serializable解决幻读


 

死锁:指两个或多个事务在同一资源上相互占用,并请求锁定对方占用的资源。

死锁条件:多个事务,不一定多条sql语句,在加锁的顺序上不同,互相占用了对方的资源

死锁原因:数据冲突或者存储引擎的实现方式

mysql两种事务型存储引擎:innoDB和NDB Cluster

mysql非事务型存储引擎:myisam

在事务中混合使用存储引擎是不可靠的,正常提交没问题,如果混合使用提交后需要回滚,非事务型存储引擎无法回滚,数据与原始状态处于不一致。

innoDB采用两阶段锁定协议(two-phase locking protocol)在事务执行过程中,随时可以执行锁定,只会在commit和rollback的时候同一时刻所有的锁被释放。

在MVCC多版本并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)。

行级锁{共享锁和排他锁}

共享锁lock in share mode:多个事务只能读数据,不能改数据

排他锁for update:其他事务不能再在其上加其他的锁

MVCC多版本并发控制:

innoDB的MVCC:在每行记录后面记录两个隐藏的列,一个列记录系统版本号,另一个保存删除版本号,每个事务开始,系统版本好自动递增。
Repeatable read隔离级别下MVCC:

select:查找版本号小于等于当前版本号的数据行 and(删除版本号大于当前版本号or删除版本号未定义的数据行)

insert:为当前插入的数据行保存当前系统版本号

delete:删除的数据行保存当前系统版本号作为行删除标识

update:为插入一行新纪录,保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为行删除标识

牺牲空间来满足性能,大多数读操作将不用加锁(注:只在RR和RC隔离级别下工作)

相关推荐

  1. mysql 事务 重复

    2023-12-30 17:34:03       42 阅读
  2. MySQL,不可重复

    2023-12-30 17:34:03       22 阅读
  3. Mysql、不可重复

    2023-12-30 17:34:03       8 阅读
  4. 什么是、不可重复

    2023-12-30 17:34:03       24 阅读
  5. 数据库的、不可重复

    2023-12-30 17:34:03       14 阅读
  6. mysql笔记:21. 演示、不可重复现象

    2023-12-30 17:34:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 17:34:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 17:34:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 17:34:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 17:34:03       20 阅读

热门阅读

  1. 二、C#基础语法( 异常处理)

    2023-12-30 17:34:03       35 阅读
  2. CountDownLatch详解以及用法示例

    2023-12-30 17:34:03       34 阅读
  3. ubuntu安装conda

    2023-12-30 17:34:03       42 阅读
  4. ubuntu 编译内核报错

    2023-12-30 17:34:03       33 阅读
  5. 百度编辑器常用设置

    2023-12-30 17:34:03       37 阅读
  6. 工智能基础知识总结--什么是AdaBoost

    2023-12-30 17:34:03       34 阅读
  7. 基于遗传算法的双层规划,基于ga的双层规划

    2023-12-30 17:34:03       44 阅读