第五章分布查的存取优化.ppt

第五章 分布查询的存取优化 * * * * * * * * * 代价评估步骤: 集中式系统中的查询优化算法 T?U S?U S?T U?R T?R S?R 表达式 0 0 0 0 0 0 最小代价 7,500 1,500,000 10,000 1,500 2,000,000 20,000 结果大小 {T,U} {S,U} {S,T} {R,U} {R,T} {R,S} 接下来考虑三个关系集合的连接表。三个关系进行连接,顺序必然是先由两个关系连接,然后结果再和第三个关系连接,因此,必然存在一个中间结果关系。三个关系连接的结果大小可以由结果计算公式算出,且无论连接的顺序如何,其结果大小是固定的。对于最小代价的估计,这里使用中间结果大小作为简单的代价估计方法。由于要选择最小代价,因此选择连接结果最小的关系对,并基于这两个关系的连接生成三个关系的连接表达式。 代价评估步骤: 集中式系统中的查询优化算法 以{R,S,T}三个关系连接为例,需要比较其中任意两个关系连接的结果大小,选择其中最小的作为最小代价和连接计划。可以看出,S?R的大小为20000,T?R的中间关系大小为2000000,而S?T的中间关系大小为10000。因此选择它来生成{R,S,T}集合的连接计划。 (T?U) ? S (U?R) ?T (U?R) ? S (S?T) ? R 表达式 7500 1500 1500 10000 最小代价 75000 7500 15000 200000 结果大小 {S,T,U} {R,T,U} {R,S,U} {R,S,T} 代价评估步骤: 集中式系统中的查询优化算法 最后考虑全部四个关系连接的情况,无论连接的顺序如何,结果关系的大小估计值都是1500000个元组,而连接的代价可以看作是中间关系的代价之和。在本例中我们不仅考虑由三个关系的集合生成四个关系的集合情况,也考虑由两个包含两个关系的集合连接生成最终连接的情况,如右图。可以看出代价最小的连接顺序为((U?R) ?T) ? S,其代价为9000。 11500 (U?R) ? ( S?T) 3500000 (T?R) ? ( S?U) 27500 (S?R) ? ( T?U) 82500 ((T?U) ? S) ?R 9000 ((U?R) ?T) ? S 16500 ((U?R) ? S) ?T 210000 ((S?T) ? R) ?U 代价 连接的顺序 集中式系统中的查询优化算法 PostgreSQL中的遗传查询优化 图示为四个关系连接R?S?T?U的连接树,每个关系使用整数进行对应的连接编码为“4-1-2-3”,表示oid为4的关系R先与oid为1的关系S连接,再与T和U连接。 ? ? ? R, 4 S, 1 T, 2 U, 3 在使用遗传查询优化(GEQO,Genetic Query Optimization )模块生成执行计划时,GEQO模块首先使用标准的查询优化器生成在独立关系上查询谓词的扫描策略,对于连接则使用遗传算法处理。 集中式系统中的查询优化算法 PostgreSQL中的遗传查询优化 初始阶段: GEQO模块简单地随机生成一些可行的连接序列,使用标准查询优化器来估计执行代价,选择代价最小的作为估计代价。 GEQO模块应用遗传算法,将执行代价作为连接序列的适应性(适应性与执行代价成反比),保留执行代价较低的连接序列。 下一阶段: GEQO模块对在上一阶段保留的执行代价较低的连接序列,随机地选择这些连接序列中部分片段并改变其连接顺序以生成新的连接序列。 对于新生成的连接序列,GEQO模块评估其执行代价,并保留其中执行代价小的作为下一个循环阶段的候选连接序列。 最后,从所有被评估过的连接序列中,选择执行代价最小的作为最终的执行策略。 分布式查询优化问题 代价模型 多查询优化 启发式规则裁剪 大的查询集合 优化 select-project-join查询 也需要处理复杂查询 (如 unions, disjunctions, aggregations 和 sorting) 平衡优化代价与执行代价 启发式规则裁剪heuristics to cut down on alternatives 控制搜索策略 优化与重优化间隔 数据库概要信息变化需要重优化 分布式系统中的查询优化算法 Distributed INGRES方法 System R*方法 Distributed INGRES方法 当一个查询Q被分解为一组不可规约的子查询q1,q2,…,qn后, 集中式环境中可以简单地顺序执行每个子查询。 在分布式环境中,由于关系以分片的形式存储在多个站点上,因此子查询可能还需要继续细分以便能够在多个场地上执行,而这将产生在站点之间复制关系所需的

文档评论(0)

1亿VIP精品文档

相关文档