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列的辅助索引,对于该非聚集 索引来说,叶子节点的插入不再有序,这时就需要离散访问非聚集索引页,插入性能变低。
时间: 2024-10-12 04:11:15