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了。

  • 相关阅读:
    智能实验室-结构化存储浏览器(SSExplorer) 1.5.0.150
    智能实验室-杀马(Defendio) 3.1.0.681
    智能实验室-结构化存储浏览器(SSExplorer) 1.6.0.160
    IT餐馆—第八回 三十
    使用Silverlight Toolkit 绘制图表区域图和冒泡图
    IT餐馆—第十二回 软培
    IT餐馆—第四回 离职
    IT餐馆—第一回 前言
    IT餐馆—第十回 潜伏
    IT餐馆—第十三回 重构
  • 原文地址:https://www.cnblogs.com/enchaolee/p/11675717.html
Copyright © 2011-2022 走看看