数据库事务管理

自己在复习的时候根据书本知识总结的,应该是不够全面。主要参考的《数据库系统概念》第六版
ps:这书的译版太难读了

  • 原子性(Atomicity):十五点所有操作在数据库中要么全部正确反映出,要么完全不反映
  • 一致性(Consistency):隔离执行事务(在没有其他事务并发执行的情况)保持数据库的一致性
  • 隔离性(Isolation):尽管多个事务可能并发执行,系统保证,对于任何一对事务 T i , T j T_i,T_j Ti,Tj,在 T i T_i Ti看来, T j T_j Tj要么在 T i T_i Ti开始之前已经执行完成,要么在 T i T_i Ti完成之后开始执行。每个事务都感觉不到有其他事务在并发执行
  • 持久性(Durability):事务成功完成后,对数据库的改变是永久的,即使出现系统故障

谈谈数据库的ACID_敦格-CSDN博客_数据库acid


r e a d ( X ) read(X) read(X):从数据库把数据项X床送到执行read操作的事务的主缓冲区的一个也称为X的变量中

w r i t e ( X ) write(X) write(X):从执行write的事务的主缓冲区的变量X把数据项传回数据库中


可串行化

只有在 I , J I,J I,J全为 r e a d read read指令时,两条指令的执行顺序才是无关紧要的

I , J I,J I,J不同事物相同数据项上的操作、至少有一个是 w r i t e write write指令时,I,J是冲突(conflict)的

如果调度 S S S可以经过一系列非冲突指令交换称 S ′ S' S,称 S S S S ′ S' S冲突等价(conflict equivalent)的

若调度 S S S与一个串行调度冲突等价,则称 S S S冲突可串行化(conflict serializable)的


可恢复调度:对于每对事务 T i , T j T_i,T_j Ti,Tj,如果 T j T_j Tj读取了之前由 T i T_i Ti所写的数据项,则 T i T_i Ti先于 T j T_j Tj提交

无级联调度:对于每对事务 T i , T j T_i,T_j Ti,Tj,如果 T j T_j Tj读取了之前由 T i T_i Ti所写的数据项,则 T i T_i Ti必须在 T j T_j Tj这一读操作前提交。(每一个无级联调度都是可恢复调度)


事务隔离性级别

所有隔离性都不允许脏写:如果数据项已经被另外一个尚未提交或终止的事务写入,则不允许对该数据项执行写操作

级别说明
可串行化保证可串行化调度
可重复读只允许读取已提交数据,在一个事物两次读取一个数据项期间,其他事务不得更新该数据(不要求串行化)
已提交读只允许读取已提交数据,不要求可重复读
未提交读允许读取未提交数据(SQL允许的最低一致性级别)

并发控制

事务 T T T获取数据项 Q Q Q上的共享型锁(shared-mode lock)(记为S)/排他型锁(exclusive-mode lock)(记为X)

共享的(shared)×
排他的(exclusive)

两阶段封锁协议

保证可串行性的一个协议,协议要求每个事务分两阶段提出加锁解锁申请

  1. 增长阶段:事务可以获得锁,不能释放
  2. 缩减阶段:事务可以释放锁,不能获得新锁

事务获得最后加锁的位置成为事务的封锁点

不保证不会发生死锁、级联回滚


级联回滚可以通过严格两阶段封锁协议加以避免:协议要求除了是两阶段封锁协议以外,还要求事务持有的所有排他锁必须在事务提交以后才可释放

强两阶段封锁协议:事务提交前不得释放任何锁。在此条件下,事务可以按其提交的顺序串行化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值