数据库学习笔记_14_transaction Management_交♂易管理

transaction Management 交易管理,准确的说应该是业务管理: 

在数据库操作中,在看来用户看来是一步的操作,往往有很多步基础操作完成。 比如说转钱对顾客来说是一步操作,但是里面会包含后面提到的多个操作。 我们定义,一个合乎逻辑的操作集合被称为交易(transaction)。

交易具有如下性质:

  一个交易或者完成,或者不存在,即对于数据操作来说,一个交易必须完成它所有的操作,如果出了什么问题,那么之前的全部操作无效。

   同时该操作不能带来不连续性(inconsistency),即经过这个操作以后数据库的状态必须和之前的一致,同时满足各种约束。

   一个交易一般是由一种高级语言写成的,一个函数或者一个statement。

   一个交易的细节对于用户来说是不可见的。

    当一个交易失败,其对于数据的操作必须被回溯,而这种失败可能包含多个情况,包括除零错误,程序员误操作,断电,银行抢劫,地球爆炸等等。这看起来很难,因为有些在内存里有些已经在硬盘里了。这种性质被称为原子性(atomicity)。一个基础的实现是在交易之前先存储旧的状态,然后交易完成返回结果。若结果失效则回滚旧状态,不然保留新的状态。

   独立性(isolation) ,也就是说多个交易可以独立运行多个操作可以同时运行,下面我们那以下操作举例:

A往B的账户转50

  1 先是从A那边扣50

  2 再从B那边加50。

  假设A有500,B有500,那么,在第一步生效但是第二步没有生效的时候,此时A账户是450,B账户是500,此时假设又有一个程序读取数据,想要给B加50,因为B的账户余额是500,在这个交易完毕以后其余额为550。但是之前的转账操作同样也只会把B的账户余额变成550,所以B就少了50块钱。这个就是程序之间非独立的一个反例。一个比较方便的办法就是让他们一个个进行,但是很明显多项同时进行会带来更高的效率,所以并行系统就成了接下来要讲的东西。

  持久性,当一个操作成功时,其更改永久生效,在正常操作以外的情况下应永久保留(durability)

所有的性质被称为ACID,即之前几个性质的缩写。

转载于:https://www.cnblogs.com/stultus/p/6995696.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值