文档详情

第8章-事务管理-并发控制.ppt

发布:2018-03-01约1.8万字共111页下载文档
文本预览下载声明
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 意向锁(续) An Introduction to Database System 意向锁的相容矩阵 意向锁(续) 具有意向锁的多粒度封锁方法 申请封锁时应该按自上而下的次序进行 释放封锁时则应该按自下而上的次序进行 例如:事务T1要对关系R1加S锁 要首先对数据库加IS锁 检查数据库和R1是否已加了不相容的锁(X或IX) 不再需要搜索和检查R1中的元组是否加了不相容的锁(X锁) An Introduction to Database System 意向锁(续) 具有意向锁的多粒度封锁方法 提高了系统的并发度 减少了加锁和解锁的开销 在实际的数据库管理系统产品中得到广泛应用 An Introduction to Database System 第八章 事务管理-并发控制 1 并发控制概述 2 封锁 3 活锁和死锁 4 并发调度的可串行性 5 两段锁协议 6 封锁的粒度 7 SQL Server的锁定 An Introduction to Database System SQL SERVER 2005的锁定 SQL Server 可以锁定以下项目类型 SQL Server 使用 DB 锁来确定数据库是否在使用中 An Introduction to Database System 项目 描述 RID 行标识符。用于单独锁定表中的一行 键 索引中的行锁。用于保护可串行事务中的键范围 页 8 KB 的数据页或索引页 扩展盘区 相邻的八个数据页或索引页构成的一组,在空间分配中使用 表 包括所有数据和索引在内的整个表 数据库 整个数据库,在数据库的还原中使用 锁的类型 SQL Server 主要有两种类型的锁:基本锁和特殊情况锁 基本锁:包括共享锁和排它锁 总的来说,读操作获得共享锁,写操作获得排它锁 共享锁:用于不更改或不更新数据的操作(只读操作),如 SELECT 语句 排它锁:用于数据修改操作,例如 INSERT、UPDATE 或 DELETE An Introduction to Database System 锁的类型(续) 特殊情况锁 意向锁:SQL Server 内部使用意向锁,以使锁定冲突减至最少 更新锁:用于可更新的资源中,防止当多个会话在读取、锁定及随后可能进行的资源更新时发生常见形式的死锁 架构锁:在执行依赖于表架构的操作时使用,确保表或索引在被另外的会话引用时不被删除或更改架构。架构锁包括架构稳定性 (Sch-S) 锁和架构修改 (Sch-M) 锁 大容量更新锁:向表中大容量复制数据并指定了 TABLOCK 提示时使用 可使用 sp_lock 命令查看锁的信息 An Introduction to Database System 锁的兼容性 An Introduction to Database System 现有的授权模式 请求模式 IS S U IX SIX X Sch-S Sch-M BU IS 是 是 是 是 是 否 是 否 否 S 是 是 是 否 否 否 是 否 否 U 是 是 否 否 否 否 是 否 否 IX 是 否 否 是 否 否 是 否 否 SIX 是 否 否 否 否 否 是 否 否 X 否 否 否 否 否 否 是 否 否 Sch-S 是 是 是 是 是 是 是 否 是 Sch-M 否 否 否 否 否 否 否 否 否 BU 否 否 否 否 否 否 是 否 是 会话级锁定选项 SQL Server 允许通过设定事务隔离级别的方式控制锁定选项 事务准备接受不一致数据的级别称为隔离级别 较低的隔离级别可以增加并发性,但代价是降低数据的正确性;相反,较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响 语法:SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | REPEATABLE READ | SERIALIZABLE } An Introduction to Database System 会话级锁定选项(续) 事务隔离级别列表 An Introduction to Database System 选项 描述 READ COMMITTED 提交读。在读取时使用共享锁,不允许脏读 READ UNCOMMITTED 未提交读。不使用共享锁,忽略排他
显示全部
相似文档