数据库系统概论06-查询处理&连接处理&事务&活锁&死锁&两段锁协议
2018-11-09 22:12
330 查看
查询处理
分成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)允许死锁的发生,采取一定的手段定期诊断系统中有无死锁,有就解除。超时法、等待图法
两段锁协议
保证调度的可串行化,
事务分两个阶段:第一阶段是获得封锁(扩展阶段)、第二阶段是释放封锁(收缩阶段)
封锁粒度:封锁对象的大小
阅读更多
相关文章推荐
- mysqli学习笔记 mysqli连接,multi_query多语句查询,SQL预处理stmt,事务处理
- 2011.9.28 mysqli学习笔记 mysqli连接,multi_query多语句查询,SQL预处理stmt,事务处理
- 事务,索引,连接查询,权限设计(面试问题)
- SQL查询艺术(T-SQL)[节选]SQL调优之大事务分段处理
- mybatis接口式的模糊查询、分页、增删改、事务处理
- java—在dbutils中处理事务与不确定条件的查询(46)
- Android SQLite 创建多表及多表查询 事务处理
- MongoDB学习系列8:连接mongodb进行查询处理
- 数据库系统概论第五版学习笔记连接查询 第三章(三)
- redis 笔记06 发布与订阅、事务、慢查询日志、监视器
- 【MySQL 06】事务处理
- 使用proxool连接sybase时处理事务的问题
- 共享数据库连接多线程访问时的事务处理
- PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
- [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法
- 正好整理了一下,自己做了个连接数据库的组件,支持SQLSERVER,ACCESS,ORACLE,FoxPro,MySql,IBM DB2,DBF等数据库,并且支持事务处理
- Yii 1.0数据库操作 查询、增加、更新、删除(事务处理)
- Oracle 11g 学习五:子查询,数据更新操作,事务处理和数据伪列
- PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
- VS2008 连接Oracle10g 事务处理