分布式数据库并发控制:从基本概念到两段封锁协议

3星 · 超过75%的资源 需积分: 31 7 下载量 81 浏览量 更新于2024-07-31 收藏 1.05MB PPT 举报
加X锁后,其他任何事务都不能再对A加任何类型的锁,即不能读也不能写。只有当事务T释放A上的X锁时,其他事务才能对A加锁。 共享锁常称为S锁或读锁; 共享锁允许事务T读取数据A,但不允许写。如果有多个事务对A加S锁,它们可以同时读取A,但都不能写。只有当所有事务都释放了A上的S锁,其他事务才能对A加X锁。 封锁规则 封锁规则是指事务在对数据项进行操作前需要遵循的加锁策略。主要有以下几点: 1. 请求并持有:事务在对数据项进行操作前,必须先请求并获得所需的锁。 2. 不可升级:一旦事务获得了某种类型的锁,就不能升级到更高级别的锁。 3. 释放并请求:事务在完成对数据项的操作后,必须释放已持有的锁,然后才能请求其他锁。 4. 无死锁:系统应设计得不会陷入死锁状态,即两个或更多事务互相等待对方释放锁而无法继续执行。 锁的兼容性 不同类型的锁之间有不同的兼容性,X锁与X锁、S锁与S锁之间是兼容的,意味着它们可以同时存在。但X锁与S锁是不兼容的,因为X锁要求独占,不允许其他事务读取。 锁的粒度 锁的粒度指的是锁定的数据范围,可以是整个记录、页面、行或列等。粒度越大,锁定的数据越多,冲突的可能性也就越大;反之,粒度越小,冲突减少,但系统开销也会增加。 第八章 第八章 分布式并发控制 分布式并发控制中,由于数据分布在不同的节点上,问题更为复杂。两段封锁协议(2PL)是一种常用的并发控制方法。 基本的两段封锁协议 两段封锁协议要求事务分为两个阶段:第一阶段是封锁阶段,事务获取所有需要的锁;第二阶段是解锁阶段,事务释放所有锁。在2PL中,事务必须在提交前释放所有锁,以防止死锁。 严格的两段封锁协议(2PL) 在严格的两段封锁协议中,事务在提交前不能释放任何锁,以确保可串行化。这意味着在事务提交前,其他事务无法看到它的中间状态,从而避免了并发问题。 并发控制理论基础 事务执行过程的形式化描述涉及事务的开始、操作、结束以及可能的回滚。集中库的可串行化问题主要关注单个数据库中的事务调度,而分布式事务的可串行化问题则需要考虑跨多个数据库节点的事务调度。 分布库并发控制方法 在分布式数据库中,并发控制需要协调不同节点间的锁管理,可能采用的策略包括分布式锁服务、两阶段提交、多阶段提交等。这些方法旨在确保分布式事务的一致性和有效性,同时最大化系统性能。 总结,分布式并发控制是确保分布式数据库系统中事务正确、高效执行的关键技术。它通过锁机制、两段封锁协议等手段防止并发执行时可能出现的丢失修改、重复读和读脏数据等问题,保证数据的完整性和一致性。