






一个事务是访问数据库的一个逻辑单位,由若干查询或更新数据库的语句进行,由编程者进行控制范围,可以独立的SQL语句,也可以包括在宿主语言中使用。


日志记录操作的序列,对于数据库来说,日志记录每个事务每个步骤执行及其效果,一个日志可以记录多个事务的执行情况,日志记录以文件形式存盘。
常用的日志类型:undo日志
redo日志
undo/redo
锁的基本模式
共享锁(Shared---S锁):允许执行读操作
排它锁(Exclusive---X锁):允许执行读/写操作
锁的调度策略:解除一个数据对象的排它锁之前,其他事务不能对它加任何锁
一个数据对象允许加几个共享锁,但不能再共享锁之上,加排它锁
两阶段锁协议:所有事务分两个阶段提出加锁和解锁请求:
增长阶段:事务可以获得锁,但不能解锁
缩减阶段:事务解锁,但不能获得锁
多粒度加锁特点
显式加锁:树上每个结点都可以单独加锁
隐式加锁:对当前结点加锁会导致隐式地对全部后代结点加上同类型的锁
死锁:两个或两个以上事务处于等待状态,每个事务都在等待期中另一个事务释放资源,导致所有事务都无法执行,这种现象称为死锁。
处理死锁方法:引入死锁预防协议,使系统不进入死锁状态,通过对加锁请求进行排序,一事务开始前要锁定所有的数据项。
允许系统进入死锁状态,引入死锁检测和死锁恢复机制进行恢复。
时间戳:数据库系统赋予事务的唯一的时间标记,以标记该事务开始执行
系统时钟值或逻辑计数值
有效性检验的调度协议
读阶段:读数据并保存在局部变量中,以后对该数据的更新均在局部变量上进行
有效性检查阶段:判断是否可以将局部变量的更新复制到数据库中去而不违反可串行性。
写阶段:事务通过有效性检查后,更新数据库
分布式数据库的产生:经济的发展
计算机硬件环境及网络的发展
发展历程:产生于20世纪70年代末期,成长于80年代
第一个分布式数据库系统SDD-1是美国计算机公司(CAA)于1976---1978年设计,79年在DEC-10/20上实现
德国斯图加特大学研制的porel系统
美国加州大学伯克利分校的Ingres
法国INRA研制的SIRIUS-DELTA
分布式数据库是一个数据集合,这些数据分布在由计算机网络连接起来的若干节点上,每个节点可以管理本地的数据应用,也可以参与全局数据应用,同时这些数据在逻辑上形成一个整体,由统一的数据库管理系统进行管理





分布式查询出来步骤
查询分析----查询分解---查询本地化----全局查询优化----局部优化
半连接运算:由投影和连接操作导出的一种关系代数操作
全局事务:分布式数据库的事务。一个全局事务在执行时分解为由若干与相应站点有关的操作序列组成的“子事务”
分布式并发控制:与集中式并发控制从原理上一致,更复杂,集中式并发控制的一种扩展
分布式并发控制目的:为并发执行的全局事务,产生一个可串行化调度
并发控制法
集中式加锁法:网络中某一个站点被指定为主站点,用于存放整个分布式数据库的加锁表,负责整个系统事务的加锁
主副本加锁法:每个数据对象指定一个主副本,不同数据对象的主副本放在不同站点上,
分布式加锁算法:锁的管理由各个站点调度器参与、协调,本地调度器负责本站数据加锁
算法:对全局副本加锁,执行更新操作,开锁
时标:唯一识别一个事务,并用于对事务进行排序的标识符