快速业务通道

MySQL Internals Optimizer

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-18
代码里,这种转化被称作区间游历(Walking)。游历短的区间成本是不贵的,这样我们能缩小分区数来扫描小的分区。然尔,游历长的区间不是那么非常有效的,需要检查大量的分区,这样的话,可能所有分区都会被扫描的。

 如下参数决定区间游历(Walking)的值:

#define MAX_RANGE_TO_WALK=10

 

 注意:如下条件关系也会利用上述区间游历(Walking)的逻辑:

const1 >= int_col >= const2

 

 区间映射(mapping)

 假设如下的分区表定义:

CREATE TABLE t (columns)
PARTITION BY RANGE|LIST(unary_ascending_function(column))
假设我们对表t的查询的WHERE语句,是如下形式中的一种:


const1 <= t.column <= const2
t.column <= const2
const1 <= t.column

 自分区函数是升序,看如下的关系:

const1 <= t.col <= const2

  => p_func(const1) <=

p_func(t.column) <= p_func(const2)
 用A和B表示这关系的最左和最右部分,我们能重写关系为:


A <= p_func(t.column) <= B
 注意:在这实例中,区间是关闭的且有两个界值。但是,类似的推论可以类推到其它类型的区间。


 

 如范围分区(RANGE partitioning),每个分区占据一个区间于分区函数值的轴线上,每个区间是不相连的,如下:

                        p0     p1      p2
  table partitions    ------x------x--------x-------->

  search interval     ----x==============x----------->
                          A              B
 一个分区需要被访问,当且仅当如果它的区间和搜索区间[A, B]没有空的交叉点。


 

 如列举分区(LIST partitioning),每个分区包括点集于分区函数值的轴线上,各分区会产生不同的交叉点,如下:

                   &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号