zoukankan      html  css  js  c++  java
  • mysql-刷脏页(12)

    一,mysql因为WAL机制,在更新时,首先会更新内存,再写redo log。一般情况下是在空闲时,将redo log刷新到磁盘中。

    二,什么是脏页。当内存中与磁盘中的数据不一致时,内存中的数据页就称为脏页。(也可以理解为redo log还没更新到磁盘中)

    三,什么时候会触发数据库flush(刷脏页):

                                              1,redo log写满,系统会停止一切更新操作;

                                              2,mysql认为空闲的时候,主动去刷新;

                                              3,系统内存不足。当需要新的内存页,而内存不够用的时候,就要淘汰一些数据页,空出内存给别的数据页使用。如果淘汰的是“脏页”,就要先将脏页写到磁盘。

                                              4,MySQL正常关闭的情况。这时候,MySQL会把内存的脏页都flush到磁盘上,这样下次MySQL启动的时候,就可以直接从磁盘上读数据,启动速度会很快。

    四,控制刷脏页的策略:

                                              1,正确设置innodb_io_capacity参数,它会告诉InnoDB你的磁盘能力。合理地设置innodb_io_capacity的值,并且平时要多关注脏页比例,不要让它经常接近75%。

                                              2,indodb刷脏页会涉及“连坐”操作,即如果刷新某个脏页,判断连续的数据页是否也是脏页,一直循环,这样无疑会提高io效率,会减少很多随机io,而刷脏页的过程由于会占用资源,可能会让你的更新和查询语句的响应时间长一些。参数innodb_flush_neighbors 为1 代表开启连坐机制,0为关闭。在MySQL 8.0中,innodb_flush_neighbors参数的默认值已经是0了。

  • 相关阅读:
    Zboot权限后台管理系统开源啦
    java中的强引用,软引用,弱引用,虚引用
    基于Hexo搭建个人博客
    拾遗Timer定时器
    手把手教你使用jmeter接口测试
    Vue 常见的面试题
    vue脚手架环境搭建
    vue过滤器
    基础面试题总结1
    Promise 库 lie.js 源码解读
  • 原文地址:https://www.cnblogs.com/enchaolee/p/11675717.html
Copyright © 2011-2022 走看看