事务的隔离级别

隔离级别分为4种:

  • 读未提交:READ-UNCOMMITED
  • 读已提交: READ-COMMITTED
  • 可重复读: REPEATABLE-READ
  • 串行: SERIALIZABLE

当多个事务同时进行的时候,如何确保当前事务种数据的正确性,不如A,B两个事务同时进行的时候,A是否可以看到B已提交事务或者未提交事务,需要看到的话依靠隔离界别来保证,不同隔离级别可以产生的效果不一样。

事务的隔离级别主要解决了多个事物之间数据可见性和数据正确性的问题。

查看隔离级别

show variables like 'transaction_isolation';

当前隔离级别为可重复读

隔离级别的设置

READ-UNCOMMITTED:读未提交

修改C:\ProgramData\MySQL\MySQL Server 5.7\my.ini文件,设计隔离级别

# 设置为读未提交
transaction-isolation=READ-UNCOMMITTED


修改完成后重启mysql服务

C:\WINDOWS\system32>net stop mysql57
MySQL57 服务正在停止.
MySQL57 服务已成功停止。C:\WINDOWS\system32>net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。

修改完成后查看隔离级别

show variables like 'transaction_isolation';

按照时间顺序在2个窗口执行

窗口1可以读取到窗口2未提交的数据,说明出现了脏读

结论:

  • 在读未提交的情况下,可以读取到其他事务还未提交的数据,多次读取,出现脏读,不可重复读

READ-COMMITED:读已提交

#  设置为读已提交transaction-isolation=READ-COMMITTED


```java
C:\WINDOWS\system32>net stop mysql57
MySQL57 服务正在停止.
MySQL57 服务已成功停止。C:\WINDOWS\system32>net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。
```java
# 查看隔离级别
show variables like 'transaction_isolation';

按照时间顺序在2个窗口执行

窗口1开启事务,无法读取到窗口2未提交的数据,说明没有脏读

窗口2提交事务后,窗口1则可以读取到数据。

结论:

  • 在读已提交的情况下,无法读取到其他窗口未提交的数据,可以读取到已提交的数据

REPEATABLE-READ:可重复读

# 设置为可重复读
transaction-isolation=READ-COMMITTED
C:\WINDOWS\system32>net stop mysql57
MySQL57 服务正在停止.
MySQL57 服务已成功停止。C:\WINDOWS\system32>net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。# 查看隔离级别
show variables like 'transaction_isolation';

按照时间顺序在2个窗口执行

窗口2未提交事务,窗口1无法查找未提交数据:未出现脏读

窗口2提交事务后,窗口1依旧无法查看数据

窗口1提交事务后,窗口1可以查看窗口2提交的事务数据

SERIALIZABLE:串行

SERIALIZABLE会让并发的事务串行执行(多个事务之间读写,写读,写写会产生互斥,这个效果就是串行执行,多个事务之间读读操作不会产生互斥)

读写互斥:事务1中先读取操作,事务2发起写入操作,事务1中的读取会导致事务2中的写入处于等待状态,直到事务1完成为止;

# 设置串行
transaction-isolation=SERIALIZABLE
C:\WINDOWS\system32>net stop mysql57
MySQL57 服务正在停止.
MySQL57 服务已成功停止。C:\WINDOWS\system32>net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。
# 查看隔离级别
show variables like 'transaction_isolation';

按照时间顺序在2个窗口执行

隔离级别为串行状态下,事务只能串行执行,串行情况下不存在脏读,不可重复读,幻读的问题

各个隔离级别中出现的问题

总结

事务的特性:原子性,隔离性,一致性,持久性

是否开启自动提交事务:set autocommit = 0 :手动,1 :自动;

开启事务: start transcation

开启只读事务:start transcation read only;

提交事务:commit;

回滚事务:rollback;

设置保存点:savepoint (name);

回滚保存点:rollback to (name);

查看隔离级别:show variables like ‘transaction_isolation’;

MySQL事务的隔离级别相关推荐

  1. MySQL事务及隔离级别详解

    MySQL事务及隔离级别详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL的基本架构 MySQL的基本架构可以分为三块,即连接池,核心功能层,存储引擎层. 1> ...

  2. mysql 事务、隔离级别

    一.事务的四大特性(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  3. 从根儿上理解MySQL | 事务的隔离级别与MVCC

    目录 事务简介 事务的概念 MySQL中事务的语法 事务的隔离级别 事务并发执行遇到的问题 MySQL中支持的四种隔离级别 MVCC原理 版本链 ReadView MVCC小结 事务简介 事务的概念 ...

  4. MySQL 事务默认隔离级别?能否解决幻读?

    事务隔离级别 MySQL 中事务隔离级别有 read uncommited.read commited.repeatable read.serializable 四种,其中默认为 repeatable ...

  5. MySQL事务学习 -- 隔离级别

    6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况. 更新丢失 ...

  6. 解读MySQL事务的隔离级别和日志登记模式选择技巧

    转自于: http://www.mysqlops.com/2011/04/25/mysql-isolation-binlog.html MySQL的四种事务隔离级别:Read-uncommitted. ...

  7. mysql中语句块当事务,MySQL事务与隔离级别

    --查看隔离级别 select  @@global.tx_isolation, @@tx_isolation; --修改隔离级别 set [session | global] transaction ...

  8. 列举MySQL事务的隔离级别_mysql dba系统学习(22)数据库事务详解

    上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉,基础不扎实啊. 下面来好好的学习哈mysql ...

  9. mysql四种隔离级别知乎_详解MySQL事务的四大特性和隔离级别

    1.事务的四大特性(ACID) 1.1.原子性(Atomicity) 原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一个不可分割的操作整体. 1.2.一致性( ...

最新文章

  1. Go语言竟成恶意软件的最爱!4年来Go编写的恶意软件飙增2000%,网友:这也能怪Go?...
  2. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)
  3. 精简 opencv python_基于Python的OpenCV人脸检测!简直不要太简单!
  4. flask需求文件requirements.txt的创建及使用
  5. Spring开发环境搭建和第一个示例程序
  6. linux 内网文件传输工具_不管你是新手PHP程序员还是大佬都要知道的PHP十大必备工具...
  7. 建班子:企业需要建立什么样的班子?
  8. Java字符串格式化记录
  9. 火车,飞机 查询接口
  10. CSS实现实心三角形和空心三角形
  11. 第一次用python编写的小程序
  12. XUPT 新生赛题目总结
  13. TCP/ip 协议端口范围 详解
  14. 计算雅思成绩C语言,终于发现【官方】雅思考试分数计算方法
  15. 基于Python实现数字图像可视化水印系统
  16. tyvj2032 升降梯上
  17. PTA 彩虹瓶 C++
  18. 安卓连接sql服务器 第二讲直接连接
  19. Autofac Circular component dependency detected 错误解决
  20. 新入职了一个00后卷王,天天加班12点,太让人崩溃......

热门文章

  1. UE4C++学习篇(六)--- 碰撞组件的Overlap处理
  2. java语言代码大全_java语言基础汇总
  3. 静态网页制作教程 (转载)
  4. matlab 实现二值图像孔洞填充函数imfill()
  5. CodeForces - 1025B Weakened Common Divisor
  6. Mesos-软件源方式安装配置说明
  7. 人脸检测颜值软件_AI人脸颜值测颜版下载-百度ai测试颜值人脸识别源码下载v1.0 免费版-西西软件下载...
  8. 【愚公系列】2023年05月 攻防世界-Web(shrine)
  9. Java实现图章或签名插在pdf的固定位置
  10. 用计算机弹音乐我们一起猫叫,用猫叫制作一首电音Remix