[MySQL5.7.6]InnoDB native partition table

在之前的版本中,分区表的分区管理模式是放在server层,对于底层引擎层而言并不存在分区表的概念,每个分区和普通的表,对InnoDB引擎而言都是等同等低位的。由于需要为每个分区建立handler,这种方式可能导致过多的资源浪费,例如bug#62536 和 bug#37252。

大部分修改对用户而言是透明的,当然,由于分区下推到引擎层,分区信息记录到数据词典表,因此从5.7.6版本开始可以和.par文件say bye bye了。.
简单来说,从如下架构(copy from worklog):
                   +-----------------+
                   |  main handler   |
                   | (ha_partition)  |
                   +-----------------+
+---------------+ +---------------+       +---------------+ 
| part1 handler | | part2 handler | ....  | partN handler |
|  ha_innobase  | |  ha_innobase  |       |  ha_innobase  |
+---------------+ +---------------+       +---------------+ 
转换成:
+-----------------+
|     handler     |
|  (ha_innopart)  |
+-----------------+
当然在存储层依然是划分成多个ibd文件,这样我们可以很方便的增加/删除/交换分区而无需重建整张表。
为了在innodb层管理分区,定义了新的接口ha_innopart,它是ha_innobase的子类(新文件handler/ha_innopart.cc),因此部分接口函数需要在这里被重新定义,例如DDL操作
相关类的关系如下:
partition
具体的修改参考:
git show 7363f343917f5213b840184594844511cc589afb
本文不展开描述具体的实现,单纯记录下相关信息,留待以后有时间再看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值