mysql 读缓存_mysql中缓存的一些用法,change buffer与double write

以前觉得学习会上瘾,现在觉得写文章也会上瘾,我这个”瘾君子“啊。在这篇文章中对mysql innoDB 缓冲池的一些其他内容的概括,以及我自己在这个过程中的一些思维运转,作为一个努力成长的小小程序猿,大家挑出来的毛病都是我成长路上的动力,都是日后作为总结的宝贵参考坐标。

MySQL缓冲池作为CPU与数据库之间的缓冲介质,一个提高数据库性能的设计,我们可以看出这又是一个缓存的用法。在innoDB中对一个数据的读取变更我们首先操作的都是这层缓存,然后通过checkpoint机制再刷新回磁盘,这样一条数据就持久化到了磁盘中保证了数据的永久性存储。那么在这个过程中可能会发生哪些问题呢?又该如何去解决呢?

我们知道内存是一个极其宝贵的资源,那么在某种程度上就意味着我们要尽可能采用性价比最好的方式来利用它,例如在innoDB中我们使用LRU算法来保证热点数据与不常用的数据在内存中存放的策略。我们知道innoDB是基于B+树的数据结构进行存储的,当按照主键进行存储时,其时有顺序递增的插入(只有当主键为autoincrement时),而二级索引与聚簇索引(ps:默认是InnoDB里的主键,主键是聚集存储的)不同,二级索引通常不是唯一的,并且插入二级索引的顺序相对随机。删除和更新可能会影响不在索引树中相邻的二级索引页,这样就会造成大量的物理读(物理读:从磁盘读取数据块到内存的操作叫物理读,当缓存不存在这些数据块的时候就会产生物理读,物理读过大表现为磁盘 I/O 较高)。由此我们引入了change buffer(早期版本中只针对insert buffer,所以也叫插入缓冲)。

二级索引又叫非聚簇索引,叶子节点存储的是 索引 和 主键 信息,在找到索引后,得到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值