什么是ACID

ACID,指数据库事务正确执行的四个基本要素的缩写--包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求.

         原子性

整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

  一致性

在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

  隔离性

两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

  持久性

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

数据库中的 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、付费专栏及课程。

余额充值