MySQL InnoDB的插入缓冲
InnoDB存储引擎有三大特性非常令人激动,它们分别是插入缓冲、两次写和自适应哈希,本篇文章先介绍 第一个特性 - 插入缓冲(insert buffer)
在上一篇《MySQL - 浅谈InnoDB存储引擎》中,我们可以 看到在InnoDB的内存中有单独一块叫“插入缓冲”的区域,下面我们详细来介绍它。 非聚集索引写性 能问题 为了阐述非聚集索引写性能问题,我们先来看一个例子: mysql>create table t ( id int auto_increment, name varchar(30), primary key (id)); 我们创建了一个表,表 的主键是id,id列式自增长的,即当执行插入操作时,id列会自动增长,页中行记录按id顺序存放,不需要 随机读取其它页的数据。因此,在这样的情况下(即聚集索引),插入操作效率很高。 但是,在大部 分应用中,很少出现表中只有一个聚集索引的情况,更多情况下,表上会有多个非聚集的secondary index (辅助索引)。比如,对于上一张表t,业务上还需要按非唯一的name字段查找,则表定义改为: mysql>create table t ( id int auto_increment, name varchar(30), primary key (id), key (name)); 这时,除了主键聚合索引外,还产生了一个name列的辅助索引,对于该非聚集 索引来说,叶子节点的插入不再有序,这时就需要离散访问非聚集索引页,插入性能变低。 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |