MySQL
文章平均质量分 63
Bupt_Aurora
这个作者很懒,什么都没留下…
展开
-
【MySQL】Innodb存储引擎关键特性之——自适应哈希索引和异步IO
自适应哈希索引(AHI) 问题背景 众所周知,Innodb存储引擎索引底层数据结构是B+树,而B+树查找的时间复杂度取决于B+树的高度。而有一种数据结构,它查找的时间复杂度是O(1),那就是——数组。想到数组,进而联想到哈希(hash)查找方法。因此,Innodb存储引擎在B+树索引的基础上,又引入了自适应哈希索引来提高查找效率。 解决方案 Innodb会监控对表上各个索引页的查询,如果观察到建立Hash索引可以带来速度提升,则建立哈希索引,又称为自适应哈希索引(AHI)。 AHI是通过缓冲池中的B+树页构原创 2021-12-23 21:07:23 · 542 阅读 · 0 评论 -
【MySQL】Innodb存储引擎关键特性之——double write
【MySQL】Innodb特性之——double write 问题背景 当数据库发生宕机时,Innodb可能正在把内缓冲区中的脏页写到表中,此时假如一个页只写了一部分,则出现部分写失效问题。Innodb使用双写机制(double write)解决部分写失效导致的数据丢失问题。 解决方案 有人会想到可以通过重做日志恢复,但是,重做日志中记录的是对页的物理操作,但如果页本身已经损坏,则重做日志不再起作用。这时,在应用重做日志之前,可以copy一个页的副本,先用副本重放日志,进行重做,这就是双写机制。 内部实现原创 2021-12-22 21:53:37 · 983 阅读 · 0 评论 -
【MySQL】InnoDB存储引擎关键特性之——Insert Buffer
目录 问题背景 解决方案 使用条件: 存在问题: 升级: 内部实现: Insert Buffer Bitmap 合并过程 问题背景 在Innodb存储引擎中,主键是行唯一标识符,并且对数据的插入和读取是按页进行。行记录按主键顺序插入效率会非常高,因此插入聚集索引一般是磁盘的顺序插入,不需要随机读取。 如果表存在主键a(自动增长),对a列的插入NULL,页中数据都是按a的值顺序存放,则不需要随机读取另一个页的记录,因此效率很高。 不是所有的主键插入都是有序的,例如主键是uuid这原创 2021-12-21 21:11:57 · 620 阅读 · 0 评论