【CMU 15-445】Lecture 15: Concurrency Control Theory 学习笔记

本文介绍了事务的概念,强调了ACID特性(原子性、一致性、隔离性和持久性)在数据库管理中的重要性,探讨了实现原子性的两种方法以及如何通过冲突可串行化视图确保事务隔离。


本节课主要介绍事务的概念和特性。

Definitions

事务是一组数据库操作(比如SQL语句)的集合,进一步可以抽象为对某些数据对象的读写操作序列。因为多个用户请求并发运行时,对数据对象的读写可能产生不一致的现象,所以需要事务及其机制辅助进行管制。
一个数据库中的所有事务需要满足以下几个性质:

  • 原子性:事务包含的操作要么全部执行要么全部不执行
  • 一致性:如果数据库在事务开始前是一致的,那么在该事务完成后也要确保数据库是一致的;数据库的一致性由用户指定, 比如银行转账时,数据库的一致性体现在两个账户的总额保持不变。
  • 隔离性:事务之间是相互隔离的,当有若干事务并发执行时,各事务间不影响,表现出与某种串行执行一样的结果。
  • 持久性:事务提交后,对数据库造成的影响应当是持久性的

ACID: Atomicity

通常可以采用两种方法实现事务的原子性:

  • Logging:DBMS为事务中已执行的操作记录上日志,并在事务异常终止时进行undo操作。
  • Shadow Paging:DBMS为每个事务单独分配pages进行修改,当事务正常提交后再更新进入数据库,如果事务异常终止,则只需要删除其对应的pages即可。这种做法不常用,因为它只在事务异常终止时的恢复阶段较方便,在正常情况下效率低于Logging。

ACID: Consistency

数据库一致性:数据库中的数据需要满足一些现实世界的约束(用户自定义的)以及一些整数约束(如年龄不应该为负数等等)
事务一致性:如果数据库在事务执行前是一致的,那么在事务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值