当前位置: 首页 > news >正文

厦门网站开发费用wordpress 文字颜色

厦门网站开发费用,wordpress 文字颜色,抚松做网站,酒网站建设你的 SQL 语句为什么变“慢”了平时执行很快的更新操作#xff0c;其实就是在写内存和日志#xff0c;而 MySQL 偶尔“抖”一下的那个瞬间#xff0c;可能就是在刷脏页(flush)。当内存数据页跟磁盘数据页内容不一致的时候#xff0c;我们称这个内存页为“脏页”。内存数据写…你的 SQL 语句为什么变“慢”了平时执行很快的更新操作其实就是在写内存和日志而 MySQL 偶尔“抖”一下的那个瞬间可能就是在刷脏页(flush)。当内存数据页跟磁盘数据页内容不一致的时候我们称这个内存页为“脏页”。内存数据写入到磁盘后内存和磁盘上的数据页的内容就一致了称为“干净页”什么情况会引发数据库的 flush 过程呢InnoDB 的 redo log 写满了这时候系统会停止所有更新操作把 checkpoint 往前推进redo log 留出空间可以继续写checkpoint 往前推进时会把对应的所有脏页都 flush 到磁盘上系统内存不足当需要新的内存页而内存不够用的时候就要淘汰一些数据页空出内存给别的数据页使用。如果淘汰的是“脏页”就要先将脏页写到磁盘。刷脏页一定会写盘就保证了每个数据页有两种状态a. 一种是内存里存在内存里就肯定是正确的结果直接返回b.另一种是内存里没有数据就可以肯定数据文件上是正确的结果读入内存后返回。这样的效率最高。MySQL 认为系统“空闲”的时候MySQL 正常关闭的情况MySQL 会把内存的脏页都 flush 到磁盘上这样下次 MySQL 启动的时候就可以直接从磁盘上读数据启动速度会很快四种场景对性能的影响“redo log 写满了要 flush 脏页”这种情况是 InnoDB 要尽量避免的。因为出现这种情况的时候整个系统就不能再接受更新了所有的更新都必须堵住。如果你从监控上看这时候更新数会跌为 0。“内存不够用了要先将脏页写到磁盘”这种情况其实是常态。InnoDB 用缓冲池(buffer pool)管理内存缓冲池中的内存页有三种状态a. 第一种是还没有使用的b. 第二种是使用了并且是干净页c. 第三种是使用了并且是脏页。InnoDB 的策略是尽量使用内存因此对于一个长时间运行的库来说未被使用的页面很少。而当要读入的数据页没有在内存的时候就必须到缓冲池中申请一个数据页。这时候只能把最久不使用的数据页从内存中淘汰掉如果要淘汰的是一个干净页就直接释放出来复用但如果是脏页呢就必须将脏页先刷到磁盘变成干净页后才能复用。所以刷脏页虽然是常态但是出现以下这两种情况都是会明显影响性能的a. 一个查询要淘汰的脏页个数太多会导致查询的响应时间明显变长b. 日志写满更新全部堵住写性能跌为 0这种情况对敏感业务来说是不能接受的。所以InnoDB 需要有控制脏页比例的机制来尽量避免上面的这两种情况。InnoDB 刷脏页的控制策略innodb_io_capacity 参数会告诉 InnoDB 你的磁盘能力这样 InnoDB 就能知道需要全力刷脏页的时候可以刷多快建议设置成磁盘的 IOPS磁盘的 IOPS 可以通过 fio 工具测试fio -filename$filename -direct1 -iodepth 1 -thread -rwrandrw -ioenginepsync -bs16k -size500M -numjobs10 -runtime10 -group_reporting -namemytestinnodb_max_dirty_pages_pct 参数是脏页比例上限默认值是 75%。InnoDB 会根据当前的脏页比例(假设为 M)算出一个范围在 0 到 100 之间的数字 F1(M) InnoDB 每次写入的日志都有一个序号当前写入的序号跟 checkpoint 对应的序号之间的差值我们假设为 N。InnoDB 会根据这个 N 算出一个范围在 0 到 100 之间的数字 F2(N)根据上述算得的 F1(M) 和 F2(N) 两个值取其中较大的值记为 R之后引擎就可以按照 innodb_io_capacity 定义的能力乘以 R% 来控制刷脏页的速度。InnoDB 会在后台刷脏页而刷脏页的过程是要将内存页写入磁盘。所以无论是你的查询语句在需要内存的时候可能要求淘汰一个脏页还是由于刷脏页的逻辑会占用 IO 资源并可能影响到了你的更新语句都可能是造成你从业务端感知到 MySQL“抖”了一下的原因要尽量避免这种情况你就要合理地设置 innodb_io_capacity 的值并且平时要多关注脏页比例不要让它经常接近 75%其中脏页比例是通过 Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total 得到的具体的命令参考下面的代码mysql select VARIABLE_VALUE into a from global_status where VARIABLE_NAME Innodb_buffer_pool_pages_dirty;select VARIABLE_VALUE into b from global_status where VARIABLE_NAME Innodb_buffer_pool_pages_total;select a/b;MySQL 在准备刷一个脏页的时候如果这个数据页旁边的数据页刚好是脏页就会把这个“邻居”也带着一起刷掉而且这个把“邻居”拖下水的逻辑还可以继续蔓延也就是对于每个邻居数据页如果跟它相邻的数据页也还是脏页的话也会被放到一起刷。innodb_flush_neighbors 参数就是用来控制这个行为的值为 1 的时候会有上述的“连坐”机制值为 0 时表示不找邻居自己刷自己的找“邻居”这个优化在机械硬盘时代是很有意义的可以减少很多随机 IO。机械硬盘的随机 IOPS 一般只有几百相同的逻辑操作减少随机 IO 就意味着系统性能的大幅度提升。而如果使用的是 SSD 这类 IOPS 比较高的设备的话我就建议你把 innodb_flush_neighbors 的值设置成 0。因为这时候 IOPS 往往不是瓶颈而“只刷自己”就能更快地执行完必要的刷脏页操作减少 SQL 语句响应时间。在 MySQL 8.0 中innodb_flush_neighbors 参数的默认值已经是 0 了。
http://www.zqtcl.cn/news/358911/

相关文章:

  • 开发网站访问流量赚钱加盟网站需要怎么做
  • 装饰协会网站源码湖南省郴州市北湖区
  • 花都网站建设价格重庆市住房和城乡建设厅网站
  • 北京住总第一开发建设有限公司网站wordpress 网站访问认证页面
  • 网站制作的管理苏州百度推广服务中心
  • 厦门建行网站首页企业展厅建筑外观
  • 重庆定制型网站建设1000套网站源码
  • 阿里云网站建设服务费会计科目安平县建设局网站
  • 网上做国外兼职网站网络编程技术实验报告
  • iis网站服务器安全隐患分析创新的合肥网站建设
  • 蛋糕网站建设方案广州网站公司推荐
  • 无锡seo公司网站广渠门做网站的公司
  • 安徽股票配资网站建设seo教程自学网
  • 网站建设酷隆做3d建模贴图找哪个网站
  • 天津市工程建设交易管理中心网站自己如何搭建服务器
  • 汉语网站建设心得专业网站的定义
  • 泉州台商区建设局网站论坛内网站怎么建设
  • 做文字云的网站平面设计发展前景
  • 域名注册后怎么建网站万网建站教程
  • 郑州网站建设幸巴石家庄站规模
  • 江华网站建设企业传统的网络营销推广方法
  • 网站开发与推广新网站开发工作总结
  • 永修县建设局网站长沙网站关键词优化
  • 厦门建站服务低代码开发会废了程序员吗
  • 安阳汤阴县网站建设下载wix做的网站
  • 福清市建设局网站深圳工业设计协会封昌红
  • 网站建设公司做网站要多少费用重庆找工作哪个网站好
  • 苏州网站建设方法cnzz网站排名是怎么做的
  • 烟台网站建设服务专业的企业智能建站制造厂家
  • 网站信息查询制作闹钟网站