首页 > 数据库 >图解MySQL脏读、幻读、不可重复读

图解MySQL脏读、幻读、不可重复读

时间:2022-10-08 17:56:23浏览次数:56  
标签:隔离 幻读 READ 脏读 MySQL 级别 重复

脏读

脏读是指事务读取到了其它事务尚未提交的数据。

不可重复读

不可重复读是指并发更新时,另一个事务前后查询相同数据时数据不一致问题。

幻读

幻读是指在执行并发新增、删除这种会使数据量发生变化的操作时,另一个事务前后查询相同数据时不符合预期。


事务隔离级别

隔离级别 脏读可能性 不可重复读可能性 幻读可能性 加锁读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ 是(InnoDB引擎除外)
SERIALIZABLE

MySQL提供了4种隔离级别来解决以上问题,如图所示,从上至下隔离级别逐级变高,同时程序并发处理能力也就越来越低。

  • 读未提交(READ UNCOMMITTED):可以读取到其它事务尚未提交的数据,会产生脏读、不可重复读、幻读问题。
  • 读已提交(READ COMMITTED):只能读取到其它事务已提交的数据,不会产生脏读,但可能产生不可重复读、幻读。
  • 可重复读(REPEATABLE READ):MySQL默认的隔离级别,不会产生脏读、幻读问题,若存储引擎非innoDB的话则存在幻读可能性。
  • 可串行读(SERIALIZABLE):通过加入读锁方式,解决脏读、不可重复读、幻读问题,同时也就意味着效率大打折扣。

如何设置隔离级别

MySQL默认隔离级别为可重复读(REPEATABLE READ)

MySQL5.1后,默认存储引擎为InnoDB,因此默认也能解决幻读问题。

查看当前的隔离级别

show variables like 'transaction_isolation';

设置当前会话事务隔离级别为READ UNCOMMITTED(读未提交)

set session transaction isolation level READ UNCOMMITTED;

标签:隔离,幻读,READ,脏读,MySQL,级别,重复
From: https://www.cnblogs.com/7moon/p/16769736.html

相关文章

  • MySQL 窗口函数
    1.窗口函数概念和语法窗口函数对一组查询行执行类似聚合的操作。然而,聚合操作将查询行分组到单个结果行,而窗口函数为每个查询行产生一个结果:函数求值发生的行称为当前......
  • 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
    1.问题:怎么给线上表加字段?工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段?比如:给下面的用户表(user)添加年龄(age)字段。CREATETABLE`user`(`id`intNOTNUL......
  • mysql服务起不来,报错被解决
    在清库的时候,手误导致的系统库mysql乱七八糟,增加了一些新表。于是将mysql库清空,重新用其他的库导入,这里记录一下导入的命令:1在命令行导入:mysql mysql<./......
  • MySQL(5.7.27)-my.ini文件配置
        MySQL5.7.27my.ini文件位置:MySQL安装目录(比如我的:D:\programing\mysql\mysql-5.7.27-winx64)。如果缺少这个文件,可以自己在安装目录创建一个,修改后保存为ANSI......
  • Django中如何使用Mysql数据库
    Django中如何使用Mysql数据库https://blog.csdn.net/weixin_47649808/article/details/126366088首先在项目settings.py的文件同目录下的 init.py文件里输入importp......
  • 2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
    新电脑安装mysql、按照以下教程成功安装。踩了两个坑、特此记录1、下载mysql5.7版本链接:​​mysql5.7网盘地址​​提取码:v7pe2、详细安装教程直接根据下方链接教程就可mysq......
  • flink-cdc同步mysql数据到hive
    什么是CDC?CDC是(ChangeDataCapture变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入INSERT、更新UPDATE、删除DELETE等),将这些变更按发生的......
  • mysql 修改字段长度
     altertablenews modifycolumntitlevarchar(130);altertable表名modifycolumn字段名类型;如:news表里的title 字段原来长度是100个字符,现长度要改......
  • mysql使用group by分类统计几万条以上数据处理
    mysql如果groupby分类统计几万条以上数据太慢,因为条件查询会走全表搜索使用explain 可以看到自己的sql效率问题出现在哪,如:它查了7万多条数据才把结果查出来   sq......
  • MySQL8.0.30安装教程
    第一步:输入MySQL网站       www.mysql.com  选择DOWNLOADS并点击进入:  选择最下面的“MySQL Community(GPL)Downloads>>”选项,进入下一页  选择......