数据库系统概论06-查询处理&连接处理&事务&活锁&死锁&两段锁协议

查询处理

分成4个阶段:查询分析、查询检查、查询优化、查询执行

全表扫描算法

索引扫描算法(B+树索引或hash索引):效率高

连接处理

嵌套循环算法:按照数据块读入内存,分外层循环(表1),内层循环(表2)对比

排序-合并算法:按连接相同属性先排序表一,取第一个扫描表2连接

索引连接算法:建立索引,查找相应的元组

hash join算法:把连接属性作为hash码,划分阶段(创建阶段:创建hash表)、试探阶段(连接阶段)

事务

用户定义的一个数据库操作序列。要么全做,要么都不做。

之前写过关于事务的知识点,请点击此处

BEGIN TRANSACTION;

COMMIT;

ROLLBACK;

活锁

T1封锁数据R,事务T2请求封锁R,T2等待,T3请求封锁R,T1释放R封锁之后批准T3请求,T2仍然等待....

T2永远等待,这就是活锁。

解决方法:先来先服务

死锁

T1等待T2,T2等待T1,就是死锁

解决方法:

(1)预防死锁:一次封锁法、顺序封锁法

(2)允许死锁的发生,采取一定的手段定期诊断系统中有无死锁,有就解除。超时法、等待图法

两段锁协议

保证调度的可串行化,

事务分两个阶段:第一阶段是获得封锁(扩展阶段)、第二阶段是释放封锁(收缩阶段)

封锁粒度:封锁对象的大小

猜你喜欢

转载自blog.csdn.net/xuxuan1997/article/details/83903686