前言
本文主要是偏MySQL本身的底层设计较多,较为枯燥,但是又比较重要,还是静心看吧,哈哈
InnoDB作为MySQL使用最广泛的存储引擎,其重要程度和江湖地位无需再多说什么,那么今天就聊一聊InnoDB的一些关键特性。
另外一说到数据库的特性,肯定就是他的优点,他为啥牛X,为啥速度会快,为啥性能会稳定等等,知道了为什么就能更好的解决问题。
一、插入缓存
听名字就知道是在插入的时候起作用的,既然说到缓存那肯定就涉及到异步,所以最直观的感受就是,插入数据时不直接刷新到磁盘,而是先缓存起来,等到一定阈值时再一起刷盘,实际情况也就是这样的。但是需要注意的是 这里的缓存并不是内存,而是和数据页一样,即物理页的组成部分。
另外对于聚集索引(说到聚集索引一般都说的主键),如果主键是自增的,那么就是顺序插入,性能非常高,一般是没有啥问题的,像分布式系统中雪花算法就是利用这一特性的,所以插入缓存肯定不是为了顺序插入做的优化。
插入缓存主要还是为了解决非聚簇索引的插入速度问题,非聚簇索引的值由于不是递增的,所以在插入的时候就肯定不是顺序的,而是随机的,涉及到随机就涉及到寻址,在大量插入的情况下速度就非常糟糕,那么怎么去解决这个问题呢?相信大家已经知道。
插入缓存使用有两个限制条件: