事务的理解及应用

1、事物的理解:

事务(Transaction)是并发控制的基本单位。指作为单个逻辑工作单元执行的一系列操作,而这些逻辑工作单元需要具有原子性,一致性,隔离性和持久性四个属性,统称为ACID特性。

Atomic(原子性):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。

Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。事物完成时和事物开始之前,数据存储中的数据处于一致状态。保证数据的无损。

Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。

Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

2、事物的应用

在数据库中要完成事物的操作,一般是将事物写在存储过程中。其具体的应用格式见下面的程序:

create procedure mon
--创建存储过程,定义几个变量

@toID int,    --接收转账的账户

@fromID int , 
--转出自己的账户

@momeys money
--转账的金额

as

begin tran
--开始执行事务

update bb [email protected] where [email protected]
-执行的第一个操作,转账出钱,减去转出的金额

update bb setmoneys=moneys+@momeys where [email protected]
--执行第二个操作,接受转账的金额,增加转来的金额

[email protected]@error<>0
--判断如果两条语句有任何一条出现错误

begin

rollback
–开始执行事务的回滚,恢复的转账开始之前状态

return 0

end

go

else  
--如何两条都执行成功

begin

commit
--执行这个事务的操作

return 1

end

go

总结:其实在应用中可以将事物理解成一句话:写在事物中的程序,要么全部执行成功,要么不执行或者执行错误后回滚到执行事物之前的状态。

时间: 2024-10-15 05:37:55

事务的理解及应用的相关文章

事务的理解

数据库事务包含4个特性:原子性,一致性,隔离性,永久性. 原子性和一致性是紧密相关的. 隔离性是两个事务互不干扰,如果修改同一条记录,结果是什么样的?怎么控制结果的准确性. 事务的理解,布布扣,bubuko.com

数据库事务的理解

1.什么事务? 是指作为单个逻辑工作单元执行的一系列操纵,要么完全地执行,要么完全地不执行.通俗来讲,比如完成一件事分为4个步骤 A,B,C,D;  每个步骤都是一个逻辑单元,完成一件事就是一个事务,这件事要么按顺序一起完成,要么完全的不执行.因此保持操纵的完整性.  2. 事务的四个特性: (1)原子性Atomic)(Atomicity) 事务必须是原子工作单元:对于其数据修改,要么全都执行,要么全都不执行.通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的.如果系统只执行这些操作的一

java中事务的理解

转载:http://www.cnblogs.com/kristain/articles/2038397.html 一.什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取.事务的正确执行使得数据库从一种状态转换成另一种状态. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isolation)和持久性(durability)的缩写事务必须服从ISO/IEC所制定的ACID原则.A

MySQL数据库事务的理解与操作

事务是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行.事务是一个不可分割的工作逻辑单元. 事务具备四个属性,简称ACID属性: 原子性(Atomicity):事务是一个完整的操作.事务的各步操作是不可分的(原子的):要么都执行.要么都不执行. 一致性(Consistency):当事务完成时,数据必须处于一致状态. 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务

谈事务的理解

事务和锁是两个联系非常紧密的概念,它们保证了数据库的一致性.由于数据库是一个可以由多个用户共享的资源,因此当多个用户并发地存取数据时,就要保证数据的准确性,事务和锁就完成了这项功能. 概念 事务就是一组包含一条或多条语句的逻辑单元,每个事务都是一个原子单位,在事务中的语句被作为一个整体,要么一起被提交,作用在数据库上,使数据库数据永久的修改,要么一起被撤销,对数据库不做任何的修改 对于这个问题比较经典的例子就是银行帐户之间的汇款转账操作.该操作在数据库中由以下3步完成: 1:源帐户减少存储金额,

Mybatis:颠覆你心中对事务的理解

本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ 1.说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性.四大隔离级别.七大传播特性.四大还好说,问题是七大传播特性是哪儿来的?是Spring在当前线程内,处理多个数据库操作方法事务时所做的一

Mybatis:深入对事务的理解

1.说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性.四大隔离级别.七大传播特性.四大还好说,问题是七大传播特性是哪儿来的?是Spring在当前线程内,处理多个数据库操作方法事务时所做的一种事务应用策略.事务本身并不存在什么传播特性,不要混淆事务本身和Spring的事务应用策略.(当然,找工作面试时,还是可以巧妙的描述传播特性的) 2.一说到事务,人们可能又会想起create.begin.commit.rollback.close.suspend.可实际上,只有commit.rol

SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因

原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中的事务概念,ACID 原则,事务中常见的问题,问题造成的原因和事务隔离级别等这些方面的知识好好的整理了一下. 其实有关 SQL Server 中的事务,说实话因为内容太多, 话题太广,稍微力度控制不好就超过了我目前知识能力范围,就不是三言两语能够讲清楚的.所以希望大家能够指出其中总结的不足之处,对我

如何更直观理解进程、线程、事务的概念

开门见山:我对进程.线程.事务的理解是,它们都是一个执行者.虽然在java的api里面定义了Executor类,不过我们现在谈论的执行者的概念与java语言没有关系,注意区分不要混淆. 在现代操作系统中,进程的概念特别重要,各种操作系统教材都会花不少笔墨来讲解这个概念,然而书中的定义往往很不直观甚至冗长,它们时常给出这样的描述,“操作系统资源调度的基本单位”,我不是说这样的描述有错,而是说这样的描述不直观,如果我们这样来描述:“进程是一个执行者,它负责执行被代码定义了的过程”,或者更简洁的表述为