聊事务隔离级别和锁问题之前首先得理解事务的隔离级别和共享锁及独占锁的概念:

事务的隔离级别

  脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

独占锁(X锁):独占锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排他锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程既能读数据又能修改数据。

共享锁(S锁):共享锁是指该锁可被多个线程所持有。如果线程T对数据A加上共享锁后,则其他线程只能对A再加共享锁,不能加排它锁。获得共享锁的线程只能读数据,不能修改数据。

1、Read uncommitted

Mysql设置Read uncommitted隔离级别,数据库在修改(update)数据时,使用的是共享锁,所以在修改数据未提交事务时,查询(select)语句是能查到此时修改的数据,如果回滚了修改的数据,则查询到的数据是有问题的,造成了脏读。该隔离级别下查询不加锁,主要涉及到的是共享锁

2、Read committed

数据库在修改数据时,使用的是独占锁,查询数据使用的是共享锁,所以在修改数据时执行查询,查询数据会等待修改数据事务提交后,执行查询并返回提交后的结果

3、Repeatable read

Mysql默认的隔离级别,加锁情况同Read committed,但是Repeatable read在读取数据后,不会立即释放共享锁,而是要等到事务结束后才会释放

4、Serializable

直接对操作的表加表锁,其他事务不能读写该表,效率比较低

最新文章

  1. [解决方案]CREATE DATABASE statement not allowed within multi-statement transaction.
  2. [2016.01.22]万峰文本处理专家 v2.1
  3. Alpha版本冲刺现场演示和阶段验收的总结
  4. 【bzoj1922】 Sdoi2010—大陆争霸
  5. Linux套接字编程
  6. 图片转换成base64_encode的链接代码示例
  7. IOS 设置定时器
  8. HDU 1756 Cupid's Arrow 判断点在多边形的内部
  9. 【微信公众平台开发】百度周边搜索接口php封装
  10. es6重点笔记:数值,函数和数组
  11. Scrapyd 改进第一步: Web Interface 添加 charset=UTF-8, 避免查看 log 出现中文乱码
  12. CodeForces - 1033A
  13. CC NOV17
  14. script标签中type为"text/x-template"或"text/html"
  15. java中集合的组成及特点
  16. Visual Ribbon Editor for CRM 连接
  17. Video.js 简单的使用介绍
  18. linux route命令详解
  19. CodeForces765B
  20. Linux入门-4 Linux下获取帮助

热门文章

  1. day09 文件属性
  2. Hive(七)【内置函数】
  3. 零基础学习java------20---------反射
  4. [JAVA]动态代理与AOP的千丝万缕
  5. 单链表的模板类(C++)
  6. CentOS 7.3安装完整开发环境
  7. [BUUCTF]PWN——[HarekazeCTF2019]baby_rop2
  8. Java on Visual Studio Code的更新 – 2021年11月
  9. CF254A Cards with Numbers 题解
  10. CF1177A Digits Sequence (Easy Edition) 题解