【数据库系统概念】事务和并发

一、事务(transcation)

什么是事务:数据库执行的基本单元,是数据库的逻辑工作单元

 

事务的几个问题:

  • 并发操作
  • 数据的不一致性

 

事务的属性ACID

原子性Atomicity 要么没做,要么全做了

一致性Consistency 隔离执行事务时候要保证一致性

隔离性Isolation 多个事务并发执行两两不影响

持久性Durability 事务完成后,对系统的影响是永久的

 

事务的状态

Active 活动状态

Partially commited 部分提交

Failed失败状态

Aborted放弃状态

Committed提交状态

Terminated终结状态

 

 

恢复数据——

  • 建立冗余数据

方法:

  • 数据转储,等级日志文件

常用恢复技术

  • 事务故障:undo
  • 系统故障:undo+redo
  • 介质故障:重新备份并恢复到一致性状态+redo

提高恢复效率的技术

  • 检查点技术
  • 镜像技术

二、并发控制

1 三种并发冲突

  • 写写冲突:两个事务都对数据库进行修改的时候
  • 读写冲突:事务两个连续读操作因为别的事务在其中的秀给而不一致
  • 写读冲突:一个事务里面写完了回滚了,然后别的事务在其回滚之前读了…

 

当一系列事务并发执行的时候isolation很容易被破坏

 

并发控制就是一系列机制,可以控制事务执行顺序,让某一个并发事务的执行结果等价于穿行的执行结果

 

1 lock模式。分为排他锁和共享锁。排他锁是,只有拿到排他锁X的才可以对事务操作。拿到共享锁S的只能读不能写。

 

锁由并发控制。他们也有相容性。S锁与且只与S锁相容,X锁不与任何锁相容。也就是说,有一个事务应有某个东西的X锁时候,当且仅当只有当他吧X锁释放了,别的锁才可以拥有这个东西的X锁或者S锁。

 

这个样子的互锁机制还由死锁的问题。为了避免这个问题,引入了两阶段控制协议。第一个阶段增长阶段允许事务申请数据项的锁,但是不允许释放数据项的锁。第二阶段允许事务释放锁,凡是不允许申请锁。有时候2PL也不能避免思索

 

三级封锁协议——为了克服数据库中的数据不一致问题

  • 一级:防止丢失修改
  • 二级:除了防止丢失修改还可以防止读脏数据
  • 三级:除了防丢失修改和防止读脏数据,还防止了不可重复读

猜你喜欢

转载自blog.csdn.net/sinat_39763590/article/details/93731238