MySQL聚簇索引深入理解(3)

写入的目标页可能已经刷到磁盘上并从缓存中移除,或者是还没有被加载到缓存中,InnoDB 在插入之前不得不先找到并从磁盘读取目标页到内存中。这将导致大量的随机 I/O。

因为写入是乱序的,InnoDB不得不频繁的做页分裂操作,以便为新的行分配空间。页分裂会导致移动大量数据,一次插入最少需要修改三个页而不是一个页。

由于频繁的页分裂,页会变得稀疏并被不规则地填充,所以最终数据会有碎片。

把这些随机值载入到聚簇索引之后,也许需要做一次 OPTIMIZE TABLE 来重建表并优化页的填充。

从这个案例可以看出,使用 InnoDB 时应该尽可能地按主键顺序插入数据,并且尽可能地使用单调增加的聚簇健的值来插入新行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/53efb852187001eb40c756ba0a9c0c54.html