mysql事务的ACID特性是什么_mysql事务ACID特性解析

P粉602998670
发布: 2025-12-21 18:38:02
原创
172人浏览过
MySQL事务的ACID特性指原子性、一致性、隔离性、持久性:原子性通过undo log实现全提交或全回滚;一致性由约束与逻辑共同保障数据合法;隔离性依赖MVCC与锁机制防止并发异常;持久性靠redo log确保提交后数据不丢失。

mysql事务的acid特性是什么_mysql事务acid特性解析

MySQL事务的ACID特性,是指事务必须具备的四个核心属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这四个特性共同保障了数据库在并发操作和异常情况下仍能正确、可靠地处理数据。

原子性(Atomicity)

事务是一个不可分割的最小执行单元,其中的所有操作要么全部成功提交,要么全部回滚失败,不会出现部分执行的情况。

  • MySQL通过undo log实现原子性:执行过程中记录反向操作日志,一旦发生错误或显式执行ROLLBACK,系统利用undo log将数据恢复到事务开始前的状态
  • START TRANSACTION开启事务,COMMIT提交,ROLLBACK撤销——这三个语句共同构成原子性控制边界
  • 注意:单条SQL默认自动提交(autocommit=1),需先设SET autocommit = 0,再手动管理事务,才能体现原子性效果

一致性(Consistency)

事务执行前后,数据库必须从一个合法状态转换到另一个合法状态,始终满足预定义的约束规则(如主键、外键、唯一性、CHECK条件等)。

腾讯云AI代码助手
腾讯云AI代码助手

基于混元代码大模型的AI辅助编码工具

腾讯云AI代码助手 205
查看详情 腾讯云AI代码助手
  • 一致性是应用逻辑与数据库约束共同保障的结果,不是由某一种机制单独实现的
  • 例如转账操作中,A扣款100元、B加款100元,总金额不变;若中途崩溃,原子性和持久性配合确保不会出现“钱凭空消失”或“重复入账”
  • 外键约束、触发器、应用层校验都参与维持一致性,但MySQL本身不自动修复业务逻辑错误

隔离性(Isolation)

多个并发事务相互隔离,一个事务的中间状态对其他事务不可见,避免脏读、不可重复读和幻读等问题。

  • MySQL默认隔离级别为REPEATABLE READ,通过MVCC(多版本并发控制)+间隙锁(Gap Lock)解决大部分并发问题
  • 四种标准隔离级别对应不同可见性规则:red">READ UNCOMMITTED(可读未提交,有脏读)、READ COMMITTED(读已提交,无脏读但可能不可重复读)、REPEATABLE READ(可重复读,MySQL默认,解决不可重复读,配合间隙锁防幻读)、SERIALIZABLE(串行化,最高隔离,但性能最低)
  • 可通过SELECT @@transaction_isolation;查看当前会话隔离级别,用SET SESSION TRANSACTION ISOLATION LEVEL ...动态调整

持久性(Durability)

事务一旦提交,其结果将永久保存在数据库中,即使系统崩溃也不会丢失。

  • MySQL主要依靠redo log(重做日志)保证持久性:事务提交时,先将变更写入redo log buffer,再刷盘到redo log文件,最后才更新Buffer Pool中的数据页
  • 崩溃恢复时,MySQL通过重放redo log,把已提交但尚未写入磁盘的数据页重新构建出来
  • innodb_flush_log_at_trx_commit参数控制刷盘策略:值为1(默认)表示每次提交都刷盘,最安全;0或2会牺牲一定安全性换取性能

以上就是mysql事务的ACID特性是什么_mysql事务ACID特性解析的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号