ACID
原子性(Atomicity):
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
一致性(Consistency):
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性
隔离性(Isolation):
隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
持久性(Durability):
在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
由于一项操作通常会包含许多子操作,而这些子操作可能会因为硬件的损坏或其他因素产生问题,要正确实现ACID并不容易。ACID建议数据库将所有需要更新以及修改的资料一次操作完毕,但实际上并不可行。
另外要了解的:(隔离性而言)
脏读:
脏读意味着一个事务读取了另一个事务未提交的数据,而这个数据是有可能回滚的。
不可重复读(Unrepeatable Read):
不可重复读意味着,在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。
幻读(phantom read):
幻读,是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样.
理解SQL SERVER中的隔离级别:
为了避免上述几种事务之间的影响,SQL Server通过设置不同的隔离等级来进行不同程度的避免。因为高的隔离等级意味着更多的锁,从而牺牲性能.所以这个选项开放给了用户根据具体的需求进行设置。不过默认的隔离等级Read Commited符合了99%的实际需求.
SQL Server隔离事务之间的影响是通过锁来实现的,这个概念比较繁杂,所以本文不会详细对这个概念进行讲解.通过阻塞来阻止上述效果
SQL Server提供了5种选项来避免不同级别的事务之间的影响
隔离等级由低到高分别为
Read Uncommited(最高的性能,但可能出现脏读,不可重复读,幻读)
Read commited(可能出现不可重复读,幻读)
Repeatable Read(可能出现幻读)
Serializable(最低的性能,Range锁会导致并发下降)
SNOPSHOT(这个是通过在tempDB中创建一个额外的副本来避免脏读,不可重复读,会给tempDB造成额外负担,因为不是标准ANSI SQL标准,不详细讨论)
总之,不同的隔离级别是通过加不同的锁,造成阻塞来实现的
引自百度百科,参看
SQL Server中事务的ACID
http://www.cnblogs.com/CareySon/archive/2012/01/29/2331088.html
相关推荐
数据库系统中的事务是确保数据一致性和完整性的重要机制。ACID原则是事务处理的核心特性,它由四个关键属性组成:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这四个...
MySQL 中的事务是指一组数据库操作,这些操作要么全部执行成功,要么全部失败回滚。MySQL 中的事务通过 ACID 特性来保证数据的一致性和可靠性,ACID 特性包括哪些?
数据库事务是数据库管理...本文通过深入分析ACID属性,并结合实际的SQL代码示例,为读者提供了一个全面的数据库事务ACID属性指南。希望本文能够帮助读者在实际工作中更好地利用事务来保证数据操作的安全性和一致性。
### MySQL 事务的基本使用——基本原理及特点 ACID #### 一、事务的概念与作用 在数据库管理系统中,事务(Transaction)是指作为一个工作单元的一系列操作。这些操作要么全部完成,要么全部都不进行,以此来确保...
事务是数据库操作的核心概念,尤其在Java这样的编程语言中,理解和掌握事务的ACID特性对于开发高可用、数据一致性的应用程序至关重要。ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和...
了解和掌握事务及其ACID属性对于开发高效、安全的数据库应用程序至关重要,尤其是在处理金融交易、库存管理等对数据一致性要求极高的场景中。在设计数据库系统时,合理地利用事务和ACID特性,可以有效地防止数据错误...
根据给定文件的信息,本文将深入探讨"HBase_SI"这一理论框架,该理论旨在实现HBase中的ACID特性。文章将从多个角度分析HBase_SI的设计理念、技术细节及其应用场景。 ### HBase_SI:实现HBase_ACID特性的理论 #### ...
ACID是事务处理中四个关键属性的缩写,分别代表原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这四个属性确保了在数据库系统中进行的数据操作能够正确执行,即使在出现...
在IT领域,"Acid"通常与 Acid Tests 相关联,这是一个术语,特别是在数据库管理和Web标准测试中。Acid测试,全称为“Atomicity、Consistency、Isolation、Durability”,是一组确保数据库事务处理正确性的准则。这些...
本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含...
首先,事务有四个基本特性,即ACID(原子性、一致性、隔离性和持久性): 1. 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会留下部分完成的操作。 2. 一致性(Consistency):事务执行...
事务的四大特性,即ACID(原子性、一致性、隔离性和持久性),是数据库系统的核心原则。 1. **原子性(Atomicity)**:事务中的每个操作要么全部完成,要么全部不完成,不存在部分完成的情况。如果在事务执行过程中...
例如,强一致性的CAP属性与ACID原则中的“一致性”和“原子性”有着相似的目标,即保证数据的一致性和事务的完整性。然而,当系统需要扩展到分布式架构时,就需要在ACID和CAP原则之间做出权衡。通常情况下,为了提高...
总结来说,大规模SOA系统中的分布式事务处理是系统设计和实施的重要组成部分,涉及到一系列复杂的概念和技术,如ACID特性、两阶段提交协议、补偿事务和最终一致性模型。开发者需要深入理解这些原理,并结合具体场景...
首先,Spring事务管理的核心概念是ACID(原子性、一致性、隔离性和持久性),这是所有事务系统的基础。在Spring中,事务管理分为两种模式:声明式事务管理和编程式事务管理。声明式事务管理通过配置元数据(如XML或...