MySQL分区表索引是怎么存储的?

写在开头

由于以前在生产环境中没有用到分区表,所以只是简单了解了一下分区表的概念,一般来说有四种分区range list hash key四种,今天新公司用到了很多分区表,所以又去实操学习了一下分区表的内容,在学习的过程中产生了一些疑问?

问题:mysql分区表的索引是怎么存储的,是存储一个大的索引树还是针对每个分区单独存储一个索引树?

于是我就带着这个问题去查询实操了一下。mysql的索引可以在information_schema.innodb_sys_indexes表上面查询到索引的类型,这块补充一下:

INNODB_SYS_INDEXES系统表中type代表索引的类型;0:一般的索引,1:不存在主键索引的表,会自动生成一个6个字节(rowid)的标示值,2:unique索引,3:primary索引;

这里我用一个表的三个分区表table_id(table_id 可以去information_schema.innodb_sys_tables表里面根据name去查找)去information_schema.innodb_sys_indexes系统表里面查询这三个分区表的索引情况,发现每个分区表都会有主键索引和一个普通索引,这充分说明索引是分开存放的,也就是说每个分区表单独有一颗索引树。

其实我们从mysql对应的数据目录也可以看到一个表在分区后在mysql数据目录会每个分区表生成一个.ibd文件,而ibd文件存的就是索引和数据,所以也能看出来,当然进一步的大家可以去尝试使用github上的工具(innblock和bcview两个小工具,github上可以搜到)查看ibd文件具体的内容。

总结

分区表会将索引分成分区个个数的索引树来存储索引,也就是分开存储。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值