死锁和活锁
#
*活锁
事物没有一个排序,某个事物一直等待//解决:采用先来先先服务策略
*死锁
都上锁,相互请求解锁
//解决:
$预防:
&一次封锁法
&顺序封锁法
$允许,诊断解锁
&超时法
&等待图法
8.5 并发调度的可穿行性
#
*多个事物的并发执行是正确的,当且仅当其结果与按某一次序串行地执行他们时的结果相同,我们称这种调度策略是可串行化的调度
*可串行性是并发事物正确性的准则,按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。
//理解:事物的结果是不会因为串行方式不同而结果不同就是可串行化的
8.6 两段锁协议
#
简单的说就是先加锁且不解锁
解锁且不加锁
*意义:若并发执行的所有事物均遵循两段锁协议,则对这些事物的任何并发调度策略都是可串行化的。
*两段锁协议可能发生死锁
封锁粒度
#
*封锁对象的大小叫封锁粒度
*封锁的粒度越大,数据库能够封锁的数据单元就越少,并发度就越小,系统开销也就越小,反之,封锁的粒度越小,并发度越高,系统开销越大。
*多粒度封锁协议允许多粒度数中的每个结点被独立加锁
$显式封锁:应事物直接在数据对象加锁
$隐式封锁:数据的上级结点被解锁,自身也就被锁了
*意向锁
*意向共享锁IS//下级S
*意向排他锁IX//下级X
*共享意向排他锁//下级先S再IX
是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须先对它的上层结点加意向锁。
第十章 数据库完整性
#
*数据库的完整性是指数据的正确性和相容性//比如学号必须唯一,性别只能是男或女;
*数据的完整性和完全性是两个完全不同的概念;
*加载数据据库数据之上的语义约束条件称为数据库的 完整性约束条件,它们作为数据库的一部分存入数据库中;
*而DBMS中检查数据是否满足完整性条件的机制称为 完整性检查;
完整性约束条件
#
静态约束条件//一个列的取值域说明
静态元组约束//元组各个列之间的约束关系
静态关系约束//各个元组之间、若干关系之间的各种关系或约束
动态列级约束//修改列定义或者列值时应该满足的条件
动态元组约束//元组中各个字段间需要满足的各种条件
动态关系约束//关系变化前后状态上的限制条件
完整性控制
#
D(Data)约束作用的数据对象
O(Operation)触发完整性检查的数据操作
A(Assertion)数据对象必须满足的断言或语义约束,这是规则主体;
C(Condition)选择A作用的数据对象值得谓词
P(Procedure)违反完整性规则时的触发过程
数据库管理系统(DBMS)
DBMS的主要功能
#
数据库定义
数据库数据存储
数据库运行管路
数据库组织和存储管理
数据库建立和维护
...