事务 ACID 特性

简介: 事务是确保数据库数据一致性和完整性的关键机制,具备ACID四大特性:原子性保证操作全成功或全回滚;一致性确保数据符合规则;隔离性防止并发干扰;持久性保障提交后数据不丢失。

事务是数据库管理系统中用于确保数据一致性和完整性的一种机制。事务有四个主要特性,统称为 ACID 特性,这些特性帮助保证了数据库操作的可靠性。下面详细介绍这四个特性:

  1. 原子性(Atomicity)
    原子性指的是事务中的所有操作要么全部成功执行,要么全部不执行。这意味着在一个事务内,如果其���任何一个操作失败,整个事务将被视为失败,所有已执行的操作都将被撤回(回滚),数据库将恢复到事务开始之前的状态。

示例:
假设你要从账户 A 转账 100 元到账户 B,事务包含两个步骤:从 A 中扣除 100 元和向 B 增加 100 元。如果在向 B 增加 100 元之前,账户 A 中的扣款操作失败,那么整个转账事务将被回滚,A 和 B 的状态不会被改变。

  1. 一致性(Consistency)
    一致性确保事务的执行将使数据库从一个一致性状态转换到另一个一致性状态。事务必须遵循所有的数据库规则和约束,包括主键、外键、唯一性等约束,以确保数据的完整性。

示例:
在转账的例子中,一致性特性确保在完成转账后,账户的总余额仍然相同,即 A 和 B 的总余额在转账前后是一致的。

  1. 隔离性(Isolation)
    隔离性指的是多个并发执行的事务之间互不干扰。每个事务的执行结果对其他事务是不可见的,直到该事务提交。这一点非常重要,因为它避免了由于并发操作造成的数据不一致。

示例:
在转账的场景中,如果同时有多个转账事务在进行,隔离性确保每个事务都认为自己是数据库中唯一正在执行的事务,从而避免在未提交的状态下读取其他事务的中间结果。

  1. 持久性(Durability)
    持久性指的是一旦事务被提交,其结果是永久性的,即使系统发生崩溃或故障,所做的更改也会保存在数据库中。通常,这通过将事务日志写入磁盘来实现。

示例:
在转账完成后,账户 A 和 B 的余额变更即使在系统崩溃后的恢复过程中也能保留,不会丢失。

总结
ACID 特性是数据库系统设计的重要基石,为应用程序提供可靠的数据处理能力。在实际开发中,理解和运用这些特性可以帮助开发者设计出更加健壮和可靠的应用程序,确保数据的一致性和正确性。

相关文章
|
前端开发 JavaScript API
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
前端 excelex 包可将数据保存为 xls、xlsx、csv、txt 文件(支持单元格样式、合并单元格等)
386 1
|
存储 Java 数据库
jvm性能调优 - 06线上应用部署JVM实战_堆内存预估与设置
jvm性能调优 - 06线上应用部署JVM实战_堆内存预估与设置
298 0
|
4月前
|
存储 安全 Java
《Java并发编程的“避坑”利器:ThreadLocal深度解析》
ThreadLocal通过“空间换安全”实现线程变量隔离,为每个线程提供独立副本,避免共享冲突。本文深入解析其原理、ThreadLocalMap机制、内存泄漏风险及remove()最佳实践,助你掌握上下文传递与线程封闭核心技术。
|
测试技术 API 数据库
性能测试概念
**性能测试评估系统在负载下的表现,关注响应时间、吞吐量、并发用户数和资源利用率。关键指标包括RT、HPS、TPS、QPS、RPS等。并发数可由QPS和平均响应时间计算。提升压力的技术手段涉及多进程、多线程,各有优劣。P90、P95、P99等分位数用于描述数据分布,揭示不同负载场景下的系统性能。**
|
11月前
|
存储 设计模式 Java
重学Java基础篇—ThreadLocal深度解析与最佳实践
ThreadLocal 是一种实现线程隔离的机制,为每个线程创建独立变量副本,适用于数据库连接管理、用户会话信息存储等场景。
398 5
|
SQL 存储 Oracle
常用数据库优缺点比较
【7月更文挑战第23天】常用数据库优缺点比较
1527 11
|
缓存 Java 数据处理
java查询大量数据优化
通过结合的高性能云服务,如其提供的弹性计算资源与全球加速网络,可以进一步增强这些优化策略的效果,确保数据处理环节更加迅速、可靠。蓝易云不仅提供稳定的基础架构,还拥有强大的安全防护和灵活的服务选项,是优化大型数据处理项目不可或缺的合作伙伴。
394 0
|
SQL 关系型数据库 MySQL
Seata常见问题之Seata不支持sql seata如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
Kubernetes 应用服务中间件 nginx
【k8s概念】一文搞懂k8s核心概念!!!(中)
【k8s概念】一文搞懂k8s核心概念!!!(中)
600 1
|
SQL 关系型数据库 数据库
分布式事务--Seata
分布式事务--Seata
631 0