什么是ACID

ACID原则是数据库事务正常执行的四个,分别指原子性、一致性、独立性及持久性

事务的原子性(Atomicity)

指一个事务要么全部执行,要么不执行.也就是说一个事务不可能只执行了一半就停止了.比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱.不可能划了卡,而钱却没出来.这两步必须同时完成.要么就不完成.

事务的一致性(Consistency)

是指事务的运行并不改变数据库中数据的一致性.例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变.

独立性(Isolation)

事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态.因为这样可能会导致数据不

持久性(Durability)

事务的持久性是指事务执行成功以后,该事务对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚.

数据库中的 ACID 模型是指在数据库管理系统(DBMS)中,为了确保事务处理的可靠性与数据的完整性,所遵循的一组特性。ACID 是 **原子性**(Atomicity)、**一致性**(Consistency)、**隔离性**(Isolation)和 **持久性**(Durability) 四个英文单词的首字母缩写。这些特性共同作用,确保即使在系统发生故障或异常时,数据库事务也能安全地完成,并保持数据的一致性和准确性[^1]。 ### 原子性(Atomicity) 原子性确保事务中的所有操作要么全部完成,要么全部不完成。如果事务中的任何一部分操作失败,整个事务都会被回滚到事务开始前的状态,从而避免数据处于不一致的状态[^3]。 ### 一致性(Consistency) 一致性保证事务执行前后,数据库的完整性约束不会被破坏。这意味着事务必须将数据库从一个一致状态转换到另一个一致状态,而不会违反任何定义的规则或约束[^4]。 ### 隔离性(Isolation) 隔离性确保多个事务并发执行时,它们彼此之间是隔离的,不会互相干扰。每个事务都像是在独立运行一样,从而避免并发操作导致的数据不一致问题[^3]。 ### 持久性(Durability) 持久性是指事务一旦提交,其对数据库的更改将永久保存,即使系统发生故障也不会丢失。这种特性通常通过日志记录和恢复机制来实现[^2]。 在实际应用中,像 MySQL 这样的数据库系统通过其存储引擎(如 InnoDB)来实现 ACID 特性,从而提供高可靠性和数据一致性保障。例如,InnoDB 使用事务日志(如 redo log 和 undo log)来支持原子性和持久性,使用锁机制和多版本并发控制(MVCC)来实现隔离性[^4]。 在某些特定场景下,如果应用对性能要求较高且能够容忍少量的数据丢失或不一致,可以适当调整数据库配置以牺牲部分 ACID 特性,从而获得更高的性能和数据吞吐量。 ```sql -- 示例:开启或关闭自动提交 SET autocommit = 0; -- 关闭自动提交以支持事务控制 ``` ```sql -- 示例:手动提交事务 START TRANSACTION; INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; UPDATE accounts SET balance = balance + 100 WHERE user_id = 2; COMMIT; ``` ```sql -- 示例:回滚事务 START TRANSACTION; DELETE FROM orders WHERE order_id = 1001; -- 发现错误,回滚事务 ROLLBACK; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值