mysql索引记录
2020-12-10 本文已影响0人
黑铁大魔王
innodb一个节点的大小,为何是4个操作系统页(16kb)?
一个节点的大小是固定的16kb,如果节点里增加data,那么节点里存储的索引值就会减少,那么b+树的高度就会变高,磁盘io次数就会增加。
innodb的主键索引:
主键索引的叶子结点只保存了真实的记录数据;
非叶子结点只保存(索引值 + 指针),假设主键是 bitInt:8b,指针:6b;
暂定:1条数据=1kb
一个叶子节点保存的数据条数:16kb / 1kb = 16条数据
一个非叶子节点保存的索引指针对:(16 * 1024) / (8 + 6 ) = 1170对(索引+指针)
高度为2的b+树 -> 根节点能有1170+1个子节点 -> 可以有1171个叶子节点
叶子节点存储的数据条数:1171 * 16 = 18736条1kb的数据
高度=3的b+树 -> 根节点能有1170+1个子节点 -> 可以有1171个子节点 -> 1171 * 1171个叶子节点
叶子节点存储的数据条数:1171 * 1171 * 16 = 21939856条1kb的数据(2千多万条)
可以,该分库分表了。