博客
关于我
MySQL 事务的面试题总结
阅读量:798 次
发布时间:2023-02-10

本文共 1206 字,大约阅读时间需要 4 分钟。

MySQL 事务深度解析

什么是事务?

事务是数据库操作的基本单位,是管理数据库一系列操作的逻辑单元。MySQL中的事务以InnoDB存储引擎为代表,能够处理复杂高并发的数据操作。

事务特性

事务在MySQL中具有以下特性:

  • 原子性(Atomic)

    要么全部执行,要么全部不执行,确保操作的完整性。

  • 一致性(Consistency)

    保持数据库的正确状态,从一个正确状态变为另一个正确状态。

  • 隔离性(Isolation)

    在事务提交前,不允许其他事务读取或修改数据。

  • 持久性(Durability)

    事务提交后,结果永久保存在数据库中。

  • MySQL 事务隔离级别

    MySQL支持四种事务隔离级别:

  • Read Uncommitted

    未提交读,可能读到未提交的数据。

  • Read Committed

    已提交读,称为不可重复读,两次读取数据可能不一致。

  • Repeatable Read

    可重复读,确保在同一事务中,数据一致性。

  • Serializable

    串行化,读写锁定整张表,性能低,常用于特殊场景。

  • 默认隔离级别为Repeatable Read。

    幻读与不可重复读

  • 不可重复读

    同一事务中,数据可能因修改而改变。

  • 幻读

    同一事务中,查询结果因新增或删除而变化。

  • 并发事务问题

    并发事务可能引发:

  • 更新丢失

    多个事务修改同一数据,可能覆盖其他事务的更新。

  • 脏读

    修改未提交前,其他事务读取脏数据。

  • 不可重复读

    数据读取结果因修改而改变。

  • 幻读

    查询结果因新增或删除而变化。

  • 解决并发问题

  • 加锁

    读取前加锁,阻止数据修改。

  • MVCC

    多版本并发控制,通过快照提供一致性读取。

  • MVCC工作原理

    InnoDB通过记录版本号,确保事务读取一致性数据。

    Repeatable Read 隔离级别下 MVCC

  • SELECT

    检查记录版本号,确保早于当前事务版本。

  • INSERT

    插入新记录,保存当前版本号。

  • DELETE

    记录删除版本号。

  • UPDATE

    新记录保存当前版本号,旧记录标记删除。

  • MySQL 事务实现原理

    基于存储引擎,InnoDB通过MVCC解决不可重复读问题,加上间隙锁解决幻读。

    设置事务隔离级别

  • 配置文件修改

    在my.cnf中设置transaction-isolation = REPEATABLE-READ。

  • 会话设置

    使用set session transaction isolation level修改隔离级别。

  • 默认为Repeatable Read。

    InnoDB 手动提交事务

    默认自动提交,set autocommit=0手动开启事务。

    autocommit=0 下操作

    手动提交,未提交数据其他连接不可见。

    手动操作事务

    使用begin、rollback、commit控制事务。


    限制时间福利

    加入作者群,与大佬交流,获取最新面试经验。添加"xiangcode",发送暗号"6000"加入!

    转载地址:http://swbfk.baihongyu.com/

    你可能感兴趣的文章
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>
    multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
    查看>>
    MySQL DBA 数据库优化策略
    查看>>
    multi_index_container
    查看>>
    MySQL DBA 进阶知识详解
    查看>>
    Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
    查看>>
    Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
    查看>>
    mysql deadlock found when trying to get lock暴力解决
    查看>>
    Musetalk如何优化嘴部,提高清晰度?
    查看>>
    MuseTalk如何生成高质量视频(使用技巧)
    查看>>
    mutiplemap 总结
    查看>>
    MySQL DELETE 表别名问题
    查看>>
    Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
    查看>>
    MySQL Error Handling in Stored Procedures---转载
    查看>>
    mysql explain关键字执行计划表解析系列一
    查看>>
    MVC 区域功能
    查看>>