mysql事务要保证什么?

1 个回答

  • 辛霖
    在漆黑的夜里,你需要一道光照亮夜行的路,我燃烧了我自己,但也造就了你我不能相拥。
    MySQL 的事务需要保证 **ACID** 四大特性: ### 1. 原子性(Atomicity) * **定义**:事务中的所有操作要么全部执行,要么全部不执行,不会出现部分执行的情况。 * **实现**:依靠 **Undo Log**(回滚日志)记录事务执行前的数据状态,在事务失败或回滚时恢复。 ### 2. 一致性(Consistency) * **定义**:事务执行前后,数据库都必须处于一致的状态,遵循约束、触发器等规则。 * **实现**:依靠数据库约束(主键、外键、唯一性)、触发器、以及事务的原子性和隔离性保证。 ### 3. 隔离性(Isolation) * **定义**:多个事务并发执行时,互不干扰,一个事务的中间状态对其他事务不可见。 * **实现**:通过 **锁机制**(行锁、间隙锁、Next-Key Lock)+ **MVCC**(多版本并发控制)实现,不同隔离级别控制可见性: * READ UNCOMMITTED * READ COMMITTED * REPEATABLE READ(InnoDB 默认) * SERIALIZABLE ### 4. 持久性(Durability) * **定义**:事务一旦提交,对数据库的修改就是永久性的,即使系统崩溃也能恢复。 * **实现**:依靠 **Redo Log**(重做日志)+ **Binlog**(二进制日志)在数据库重启后进行数据恢复。
    发布于 2025-08-11 20:10 •IP属地 云南
    举报
    评论
    收藏