数据库系统概论第十四章分布式数据库系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

14.3查询处理和优化1、影响分布式查询处理的因素(详细见分布式数据库系统的查询优化)影响分布式查询处理效率的主要因素有:①数据分布(数据的局部性)。系统中数据的合理分布将使数据存放到离其应用点最近的节点,这样就使得每个节点只处理数据库的一个部分,CPU和I/O服务的竞争就不像集中式数据库那样严重,而且还减少了远程访问的延迟(这样的延迟常发生在通信链路中)和节点间数据的传输量。②内部查询和内在查询的并行化。系统的内部查询并行化是多个查询同时执行的结果;内在查询并行化是将单个查询分解成子查询以便每个子查询在不同的节点执行的结果。这样的并行将大大降低查询处理所需的时间,提高查询处理的效率。③节点间传输的数据总量。在系统的分布式处理中,查询策略的不同将导致在节点间传输的数据总量的差异,这将极大的影响查询处理的效率(特别是在节点间的通信效率不高时)。④传输一组数据的代价。在系统中,传输一组数据的代价随具体查询处理的要求和通信线路的状况而变,将影响查询处理的代价模型从而改变查询处理的策略,导致查询处理效率的变化。⑤各节点的处理延迟。在分布式查询处理中,由于涉及多个节点的操作,各个节点的处理延迟就成为影响查询处理效率的重要因素了。2、分布式查询的优化经过对分布式查询处理的分析(如上文所述),对其优化处理如下:1查询分解2查询的场地选择在分布式数据库系统中,由于数据分布在用网络连接的多个场地上,有重复副本的数据库中每个关系在不同的场地上又都有一些副本,这样在查询处理时,必然要涉及场地选择问题。场地选择关系到传输延迟,因而是影响查询处理效率的重要因素之一。场地选择的原则是:①保证查询的成功;②尽量保证处理的局部性;③尽可能选取通信开销小的场地。对于分布式查询处理中的场地选择有四种典型算法:分支与估界算法(BB)、贪婪算法(GR)、模拟退火法(SA)和局部搜索算法(LS)。3查询优化的实现以个人代理营销业务系统为例,查询优化主要从两个方面考虑:①减少场地间的数据传输;②要增加操作的并行性。对通信费用的算法主要思想是对每个查询条件都尝试是否能够用半连接减少通信费用;对响应时间的算法主要采用“本地析取,异地合取”的策略,即把各节点满足条件C1∨…∨Cm数据元组集合先传送到选定的处理节点,然后在处理节点对其并集过滤出满足条件C1∧…∧Cm的数据元组集合,得到所需的结果。这样可以缩短响应时间并实现查询结果的即时传送。3、优化相关半连接优化实例:SDD-1分布式数据库系统、AHY算法直接连接优化实例:R*(嵌套循环方法(nestedloop)对外层循环(Student)的每一个元组(s),检索内层循环(SC)中的每一个元组(sc)检查这两个元组在连接属性(sno)上是否相等如果满足连接条件,则串接后作为结果输出,直到外层循环表中的元组处理完为止2排序-合并方法(sort-mergejoin或mergejoin)适合连接的诸表已经排好序的情况排序-合并连接方法的步骤:如果连接的表没有排好序,先对Student表和SC表按连接属性Sno排序取Student表中第一个Sno,依次扫描SC表中具有相同Sno的元组当扫描到Sno不相同的第一个SC元组时,返回Student表扫描它的下一个元组,再扫描SC表中具有相同Sno的元组,把它们连接起来重复上述步骤直到Student表扫描完)14.4分布事务管理1、两段提交协议示意图关于两段提交协议的分类集中式2Pc通信结构分层式2Pc通信结构线性2Pc的通信结构分布式2PC的通信结构(详细见另一文档)2、两段提交协议的改进—三段提交协议思想:在两段提交协议的基础上加以改进,使得参与者的提交要等到参与者获悉两件事后才可以进行:一件事是参与者要知道所有参与者均发出了“准备提交”的应答,另一件事是参与者要知道所有参与者当前的状态(故障状态或已恢复状态)。这时,两段提交协议即衍变为三段提交协议。阶段1:投票表决阶段由协调者向各个参与者发“预提交”(Prepare)命令,然后等待回答。若参与者可以提交,则向协调者返回“赞成提交”(Ready)应答,否则向协调者发送“准备废弃”(Abort)应答。阶段2:准备提交阶段若协调者收到的应答中存在“准备废弃”(Abort)应答,则向各个参与者发“全局废弃”(Abort)命令,各个参与者执行废弃,执行完毕后向协调者发送“废弃确认”(Ack)应答。相反地,若协调者收到的应答均为“赞成提交”(Ready)应答,则向各个参与者发“准备提交”(Prepare-to-Commit)命令,然后等待回答。阶段3:执行阶段当协调者收到所有参与者的“准备就绪”(Ready-to-Commit)应答后,向所有参与者发送“提交”(Commit)命令,此时各个参与者可以执行提交,提交后向协调者发送“提交确认”(Ack)应答。3、并发控制(1)所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁:1.在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁,而且2.在释放一个封锁之后,事务不再申请和获得任何其他封锁。所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。例如事务T1遵守两段锁协议,其封锁序列是:(如右)又如事务T2不遵守两段锁协议,其封锁序列是:SlockA…UnlockA…SlockB…XlockC…UnlockC…UnlockB;可以证明,若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。另外要注意两段锁协议和防止死锁的一次封锁法的异同之处。一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。(2)并发控制机制划分为两种类型:悲观并发控制法和乐观并发控制法悲观算法使事务的并发执行在执行生命周期的开始就同步化,而乐观算法则将同步化延迟到事务执行周期的结束。(3)基本封锁算法(1)简单的分布式封锁方法数据更新时,要将同一数据的全部副本封锁,然后对其进行更新,更新完成后解除全部上述封锁。(2)主站点封锁法模拟集中式,选定一个站点定义为“主站点”,负责系统全部封锁管理。所有站点都向这个主站点提出封锁和解锁请求,所有封锁和解锁信息都被传送到那个主站点管理和保存,然后有主站点去处理封锁事宜。(3)主副本封锁法该方法不指定主站点,而对每个数据项指定一个主副本,不同数据项的主副本放在不同的站点上。当处理程序对某个数据项进行操作时,先对此数据项的主副本进行封锁,然后再进行操作,这就意味着对此数据项的所有副本都封锁。(4)快照方法快照方法类似于视图的一种导出关系,但又与视图不同。它是实际数据的暂时凝聚,是数据库的一种存储方式。快照方法不考虑数据的复制,只考虑每一数据的“主副本”和定义在这些“主副本”上的任意多个快照。快照可以定义为一个或多个“主副本”的部分拷贝,也可以定义为某个或某些“主副本”的全拷贝。

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功