Facebook MySQL: 索引在线碎片整理特性

  1. 云栖社区>
  2. 博客>
  3. 正文

Facebook MySQL: 索引在线碎片整理特性

zhaiwx_yinfeng 2016-05-10 15:18:56 浏览1855
展开阅读全文

背景

我们知道Innodb使用BTREE来进行数据组织存储,当发生INSERT/UPDATE/DELETE时,有可能会产生数据s碎片,不能有效的利用page空间。而这些空洞在未来甚至有可能不再被使用到。即使是顺序的Insert,也可能产生空间浪费:为了保证以后对相同page的更新不会产生page分裂,Innodb总是为其保留一部分的剩余空间。

本文是对之前写的这篇博客的整理和补充(http://mysqllover.com/?p=1014)

DML操作的空间影响

INSERT操作

对于INSERT也分两种情况,直接INSERT 以及通过更改已有记录的方式来INSERT;第一种方式大家可能比较理解;

对于第一种方式,在插入记录时,对于page 内数据大小是有个硬限制的:

从btr_cur_optimistic_insert函数截取的代码:

1399

网友评论

登录后评论
0/500
评论
zhaiwx_yinfeng
+ 关注