快速业务通道

MySQL Internals Optimizer

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-18
bsp;  p0  p1   p2   p1   p1   p0
table partitions    --+---+----+----+----+----+---->

search interval     ----x===================x------>
                        A                   B
 一个分区需要被访问,至少一个交叉点在搜索区间[A, B]里。所用的分区集可确定运行从A到B,并收集它们的点在这个搜索范围内的分区。


 

 子分区区间(subpartitioning intervals)


 在前面部分我们描述几种从基本的WHERE条件推断出在用分区集。一切都表明,这些分区的推断方法都适合于子分区,除范围分区(RANGE partitioning)和列举分区(LIST partitioning)的子分区外。


 自每个分区以同样的方式被分子分区,我们会找出在每个分区内的哪个子分区会被访问。


 

 从WHERE语句到区间(From WHERE Clauses to Intervals)

 之前的章节讲述了,从表示分区和子分区区间的WHERE语句推断出分区集。现在我们看看如何从任意WHERE语句抽出区间。

 

 抽取的流程使用范围分析器(RANGE Analyzer),属于MySQL优化器的一部分,它产生范围RANGE访问的计划。这是因为这个任务是相似的。两种WHERE语句的形式:RANGE访问类型使用索引范围(区间)扫描;分区裁剪(partition pruning)模块使用分区区间,用来决定哪个分区被使用。


 为了分区裁剪(partition pruning),范围分析器(RANGE Analyzer)与WHERE语句被调用,一个由分区和子分区函数使用的表的列清单:

(part_col1, part_col2, ... part_colN,
subpart_col1, subpart_col2, ... subpart_colM)
 范围分析器(RANGE Analyzer)工作的结果被称为SEL_ARG图。这是一个很复杂的结构,我们不打算在这里描述它。目前这个文化讨论的重点是我们能游历所有分区,并收集分区和子分区的区间。


 

 如下例子阐明结构和游历流程。假设表t按如下的分区:

CREATE TABLE t (..., pf INT, sp1 CHAR(5), sp2 INT, ... )
  PARTITION BY LIST (pf)
  SUBPARTITION BY HASH(sp1, sp2) (
    PARTITION p0 VALUES IN (1),
&n

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号