砍材农夫砍材农夫
  • java
  • redis
  • mysql
  • 场景类
  • vuepress搭建
  • hexo搭建
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • nodejs
    • npm
    • webpack
    • 微信
    • 正则
    • uniapp
  • java

    • java基础
    • jdk体系
    • jvm
    • spring
    • spring_cloud
    • spring_boot
    • 分库分表
    • zookeeper
  • python

    • python基础
    • python高级
    • python框架
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI工具
  • MCP
  • AI集成框架
  • 相关算法
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • docker
  • k8s
  • devops
  • nginx
  • 元宇宙
  • 区块链
  • 物联网
  • linux
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • java
  • redis
  • mysql
  • 场景类
  • vuepress搭建
  • hexo搭建
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • nodejs
    • npm
    • webpack
    • 微信
    • 正则
    • uniapp
  • java

    • java基础
    • jdk体系
    • jvm
    • spring
    • spring_cloud
    • spring_boot
    • 分库分表
    • zookeeper
  • python

    • python基础
    • python高级
    • python框架
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI工具
  • MCP
  • AI集成框架
  • 相关算法
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • docker
  • k8s
  • devops
  • nginx
  • 元宇宙
  • 区块链
  • 物联网
  • linux
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 基础面试题

    • 版本问题
    • 索引
    • 密集索引和稀疏索引的区别
    • 索引最左匹配原则
    • 锁
    • 事务
  • 案例

    • 索引优化
  • 性能优化

    • 慢查询日志
  • 事务级别
  • 幻读 vs 脏读 vs 不可重复读
  • 如何避免幻读
事务是确保数据库操作原子性、一致性、隔离性、持久性的核心机制

事务级别

隔离级别脏读可重复读幻读实现原理简述
读未提交可能可能可能几乎不加锁,直接读最新数据。
读已提交不会可能可能语句级快照(每次SELECT生成快照)。
可重复读不会不会可能事务级快照(第一次SELECT生成快照)。InnoDB通过间隙锁基本解决幻读。
串行化不会不会不会通过强制加锁,使事务串行执行。

注:InnoDB默认级别是“可重复读”,且通过Next-Key Locks(记录锁+间隙锁)在很大程度上避免了幻读。

幻读 vs 脏读 vs 不可重复读

它们都属于并发问题,但侧重点不同,这个对比能帮你更精准地理解:

问题核心焦点发生场景简单比喻
脏读数据内容,读到了未提交的“脏”数据。读未提交隔离级别。看到别人未提交的草稿。
不可重复读同一行数据的内容被修改。读已提交级别可能发生。同一本书,别人改动了内容。
幻读结果集的行数发生变化(新增或删除行)。可重复读级别下可能发生。书架上书的总数变了。

如何避免幻读

MySQL的InnoDB引擎在可重复读级别下,通过一套组合拳很大程度上避免了幻读,而非完全杜绝

最近更新: 2025/12/17 21:51
Contributors: kcnf
Prev
锁