`

事务(一)———事务的4个特性

 
阅读更多

 

例如:支票表和储蓄表

start transaction

            Select balance from checking where customer_id=12345;

            Update checking set balance=balance-100 where customer_id=12345;

            Update savings set balance=balance+100 where customer_id=12345;

            Commit;

 

 

原子性(atomicity

       一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么完全提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

 

 

一致性(consistency

      数据库总是从一个一致的状态转换到另外一个一致性的状态。在上面的例子中,一致性确保了,即使在执行第三、四语句之间时系统崩溃,支票账户中也不会损失100元钱,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中。

 

隔离性(isolation

    通常来说,一个事务所做的修改在最终提交之前,对其他事务是不可见的。在上面的例子中,当执行完第三条语句、第四条语句还未开始时,此时有另外一个账号汇总程序开始运行,则其看到的支票账户的余额并没有被减去100元钱。

    Ps:通常来说的解释,read uncommitted级别

 

持久性(durability

一旦事务提交,则其所做的修改就会永久保存到数据库中。此致即使系统崩溃,修改的数据也不会丢失。持久性是个有点模糊的概念,因为实际上持久性也分很多不同的级别。有些持久性策略能够提供非常强的安全保障,而有些则未必。而且不可能有能做到100%的持久性保证的策略(如果数据库本身就能做到真正的持久性那么备份又怎么能增加持久性呢?)。

 

 ANSI SQL事务隔离级别

隔离级别

脏读可能性

不可重复读可能性

幻读可能性

加锁读

read uncommitted

Yes

Yes

Yes

No

read committed

No

Yes

Yes

No

repeatable read

No

No

Yes

No

serializable

No

No

No

Yes

 

 

分享到:
评论

相关推荐

    【ADO.NET】七、程序事务应用——TAOBAO(升级)

    `TransactionScope`提供了一种简单的方式来创建一个隐式事务,所有在该作用域内的数据库操作都将参与同一个事务,直到调用`Complete`方法或遇到异常,事务才会被提交或回滚。 4. TAOBAO项目中的事务应用 在TAOBAO...

    数据库事务处理基础——设计与实现

    在“数据库事务处理基础——设计与实现”这个主题中,我们将深入探讨数据库事务的各个方面,包括其定义、特性、类型以及如何在实际应用中进行设计和实现。 数据库事务是数据库操作的基本单元,它封装了一组操作,...

    Spring3事务管理——使用@Transactional 注解.rar

    - 在方法上添加`@Transactional`注解,表明该方法将在一个事务中执行。例如: ```java @Service public class UserService { @Transactional public void createUser(User user) { // 数据库操作 } } ``` ...

    事务管理(二)——SQL SERVER的事务管理

    这篇博客“事务管理(二)——SQL SERVER的事务管理”可能详细介绍了SQL Server如何处理事务,包括事务的特性、隔离级别以及如何处理事务中的并发问题,如死锁。 首先,事务有四个基本特性,即原子性(Atomicity)...

    SpringBoot事务和Spring事务详讲

    在讨论 Spring 事务之前,我们先从日常生活中的一个常见场景——取钱说起。当你从 ATM 机上取款时,这一过程可以分为两个主要步骤:首先扣除账户余额,接着吐出现金。这两个步骤必须同时成功或同时失败,否则就会...

    Oracle应用项目——事务实例.pdf

    在Oracle系统中,事务由一系列SQL语句组成,这些语句作为一个逻辑单元执行,要么全部成功,要么全部失败,这一特性称为原子性。事务的四个基本属性,即ACID属性,包括: 1. 原子性(Atomicity):事务的所有操作被...

    ASP网站实例开发源码——新疆赛德律师事务所.zip

    【ASP网站实例开发源码——新疆赛德律师事务所.zip】是一个包含了使用ASP(Active Server Pages)技术开发的网站实例源代码。ASP是微软推出的一种服务器端脚本环境,主要用于创建动态交互式网页。这个实例是为新疆...

    mysql事务学习资料(PPT+源码)

    在显式事务模式下,用户可以使用`START TRANSACTION`开始一个事务,`COMMIT`提交事务,或者`ROLLBACK`回滚事务。 4. **事务控制语句**:MySQL提供了一些控制语句来管理事务,如`BEGIN`、`START TRANSACTION`(等同...

    15原理 5:同舟共济 —— 事务(1).md

    事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。这些操作或者全部成功,或者全部失败,保证了数据的一致性。 在关系型数据库中,事务通常需要满足ACID的特性,即原子性...

    数据库试验,关于事务的创建撤销,事务的回滚等基本操作练习

    这四个特性——原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)——合称为ACID属性,是事务的核心特征。 原子性保证了事务中的每个操作都是不可分割的,即使在系统故障或...

    51 SQL标准中对事务的4个隔离级别,都是如何规定的呢?l.pdf

    在读已提交级别中,如果一个事务在执行过程中,另一个事务提交了新的数据,那么本事务再次读取相同的数据时,可能会得到不同的结果。这个隔离级别减少了读取到错误数据的风险,但可能会导致数据的读取结果出现不一致...

    跨库事务工具类

    3. **Saga事务**:是一种长事务的解决方案,它将一个大事务拆分成一系列小事务,每个小事务都有对应的回滚操作(Saga)。如果某个小事务失败,可以回滚前面成功的小事务,直到回到初始状态。 4. **分布式事务处理...

    springMVC+MYBATIS事务管理

    例如,PROPAGATION_REQUIRED表示当前方法必须在一个事务中运行,如果已经存在一个事务,就加入到这个事务;如果没有,则创建一个新的事务。 6. **异常与事务回滚** 默认情况下,只有在运行时检查异常...

    MongoDB官网翻译(卷七)——事务.docx

    - 在事务中,每个操作都必须与一个会话(session)相关联,即将会话传递给每个操作。 - 事务中的操作使用事务级别的读关注(read concern)、写关注(write concern)和读取偏好(read preference)。 - 自MongoDB ...

    Mysql事务的基本使用-基本原理及特点ACID

    在实际应用中,一个事务可能涉及多个SQL语句,例如在转账的过程中,需要同时更新两个账户的余额信息,这种情况下就需要通过事务来保证操作的完整性和一致性。 #### 二、MySQL中事务的基础知识 在MySQL中,事务主要...

    大规模SOA系统中的分布事务处事_程立.pdf

    例如,在Java企业平台中,JTA(Java Transaction API)提供了一个标准的API用于管理事务,而JTS(Java Transaction Service)则提供了一个完整的事务服务实现。这些技术和工具使得开发者能够更加专注于业务逻辑的...

    EF事务死锁测试.rar

    4. **EFLockErrorConsole项目分析**:这个子文件很可能是包含一个控制台应用程序,用于模拟和展示EF中的事务死锁。可能的实现包括创建两个并发运行的线程,每个线程使用EF进行不同的数据库操作,通过这种方式引发...

    MySQL与事务

    为了更好地理解事务处理在MySQL中的实现方式,我们通过一个具体的示例——“网上购书”场景来探讨事务是如何工作的。假设一个在线书店的最后一本书(编号为123)同时被两个用户订购。我们将基于InnoDB存储引擎来讨论...

    ASP网站实例开发源码——律师事务所网站系统源代码.zip

    这个"ASP网站实例开发源码——律师事务所网站系统源代码.zip"是一个包含ASP技术实现的律师事务所网站的完整源代码。这样的源码对于学习ASP编程、网站开发,特别是法律服务行业网站的构建具有很高的参考价值。 在ASP...

    浅析PostgreSQL事务处理机制

    事务在数据库领域指的是一个或多个操作的集合,这些操作作为一个整体被执行,要么全部成功,要么全部失败。事务的执行通常遵循所谓的ACID特性: - **原子性(Atomicity)**:事务中的所有操作要么全部完成,要么一个也...

Global site tag (gtag.js) - Google Analytics