查询处理
分成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)允许死锁的发生,采取一定的手段定期诊断系统中有无死锁,有就解除。超时法、等待图法
两段锁协议
保证调度的可串行化,
事务分两个阶段:第一阶段是获得封锁(扩展阶段)、第二阶段是释放封锁(收缩阶段)
封锁粒度:封锁对象的大小