`
丁林.tb
  • 浏览: 794780 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL“异象”分析:备库的io util比主库重?

阅读更多

同事问了个线上现象:主备机器配置一样,主库上有更新查询,备库设置为主库的从库,没有其他更新和查询压力。但备库的io util比主库的重。本来看主库的压力比较大,想把一部分查询切到备库,一看io这样,不太敢切。

 

1、原因

这个原因两年前在之前公司碰到过一次,只是现象不同。那个现象描述起来比较复杂,这回刚好借这个现象说明一下。

原因还是从srv_master_thread说起。这个InnoDB后台的主进程一直在循环作各种事情。其中有一个for (i = 0; i < 10; i++) ,循环体每执行一次sleep 1秒,作一些flushmerge的事情,网上这类文章很多,不细数了。我们要关注的是循环中的这句话

 

                if (srv_activity_count == old_activity_count) {

                        /* There is no user activity at the moment, go to

                        the background loop */

                        goto background_loop;

                }  

 

注释也说的明白,如果此时没有用户活动,则认为是系统空闲,执行background_loop。这个background_loop流程作的事情包括insert buffer merge flush buffer pool pages 都是些耗系统资源的活儿。做完之后又回到for前面的逻辑。

 

而对于从库来说,一直没有用户请求,所以一进入for就符合进入background_loop的条件,所以整个线程实际上就是不停的在作background_loop里面的事情。

 

       所以结论就是由于没有用户请求,InnoDB认为系统空闲,因此玩儿命地刷盘,看上去io就很重。

 

2、 验证

既然如此,就想办法告诉InnoDB:其实现在很忙。 可以简单的写个脚本不停的执行一个简单的语句,让if (srv_activity_count == old_activity_count)这条件不满足就行。比如 select sql_no_cache * from t where key = xxx limit 1;

会看到加了这脚本后,备库的io util也下去了。

 

3、 结论

切点查询流量去备库没有问题,反而会让备库看上去“正常” ;

InnoDB的这个判断机制有点囧,实际上有很多条件都可以比较合理的判断,不过也不是什么大问题,好歹还有些方法可以绕过的嘛,就是土了点。。。

2
3
分享到:
评论
2 楼 丁林.tb 2011-08-28  
mumuwater 写道
这种调优是不是比较局限:适合特点的读写场景(写page不是很分散,bp的脏页可以合并)。否则,在写量比较大的情况下,即使不进入background loop也会做额外刷盘操作。

这个其实不是“额外的”, 本身修改数据就是需要刷盘, 这种异步方式还是有意义的,比如在刷盘前这个page被多次修改,这就把多次写变成一次写了
1 楼 mumuwater 2011-08-24  
这种调优是不是比较局限:适合特点的读写场景(写page不是很分散,bp的脏页可以合并)。否则,在写量比较大的情况下,即使不进入background loop也会做额外刷盘操作。

相关推荐

    opentracing-util-0.33.0-API文档-中文版.zip

    对应Maven信息:groupId:io.opentracing,artifactId:opentracing-util,version:0.33.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    JAVA课件 swing io util

    在学习过程中,可以通过编写小型项目来实践,例如创建一个文件浏览器,使用Swing展示目录结构,用户选择文件后,使用IO读取文件内容,并利用Util进行简单的数据分析。这样既能巩固理论知识,也能提升实际编程技能。

    common-io-3.1.1-API文档-中文版.zip

    赠送jar包:common-io-3.1.1.jar; 赠送原API文档:common-io-3.1.1-javadoc.jar; 赠送源代码:common-io-3.1.1-sources.jar; 赠送Maven依赖信息文件:common-io-3.1.1.pom; 包含翻译后的API文档:common-io-...

    opentracing-util-0.33.0-API文档-中英对照版.zip

    Maven坐标:io.opentracing:opentracing-util:0.33.0; 标签:opentracing、util、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    深入理解Java中的两种Stream:`java.util.stream.Stream`与`java.io.Stream`

    理解java.util.stream.Stream与java.io.Stream的区别对于Java开发者来说非常重要。这两种Stream在Java生态系统中都扮演着重要的角色,但它们服务于不同的目的。正确选择和使用这两种Stream,可以帮助你编写更高效、...

    jetty-util-6.1.26-API文档-中文版.zip

    Maven坐标:org.mortbay.jetty:jetty-util:6.1.26; 标签:util、mortbay、jetty、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    context:property-placeholder 和util:properties

    context:property-placeholder 和util:properties 博客:https://blog.csdn.net/u010476739/article/details/76735527

    acl_mysql_util

    acl_mysql_util是一个针对MySQL数据库和ACL(Access Control List,访问控制列表)的实用工具库,它为开发者提供了方便的接口,以便在应用中更高效、更安全地进行数据操作。这个库是基于MySQL的原生接口进行封装,...

    mysql-util:节点“ mysql”模块MySQL实用程序

    在实际项目中,`mysql-util`模块适用于各种场景,如Web应用程序的数据后台、数据分析工具或自动化脚本。它可以帮助开发者更安全、高效地处理数据库操作,减少出错的可能性,并提高代码的可维护性。 总之,`mysql-...

    kotlin-util-io.jar

    kotlin-util-io.jar

    API应用编程接口:IO、Lang、Util涉及的一些类,方法

    本文将深入探讨Java API中的IO、Lang、Util包涉及的一些关键类和方法,帮助开发者更好地理解和利用这些工具。 一、异常处理 在Java中,异常是程序运行时遇到的错误。通过try-catch语句块,我们可以捕获并处理这些...

    mysql工具类util

    常用的dao层工具类,包括数据库连接池,连接路径。mysql,sqlserver,orecal三大数据库连接池

    kerby-util-1.0.1-API文档-中文版.zip

    Maven坐标:org.apache.kerby:kerby-util:1.0.1; 标签:apache、kerby、util、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    mysql-util:用于 mysql 和 nodejs 的实用程序模块

    mysql-查询-实用程序 用于 mysql 和 nodejs 的简单轻量级实用程序模块。 这个插件帮助构建具有更相关语法的 mysql 查询,就像大多数非 sql 数据库管理系统一样。 它是一个可通过 npm 注册表获得的模块,因此请务必...

    jetty-util-9.4.43.v20210629-API文档-中文版.zip

    Maven坐标:org.eclipse.jetty:jetty-util:9.4.43.v20210629; 标签:eclipse、jetty、util、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    jetty-util-6.1.26-API文档-中英对照版.zip

    Maven坐标:org.mortbay.jetty:jetty-util:6.1.26; 标签:util、mortbay、jetty、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    kerby-util-1.0.1-API文档-中英对照版.zip

    Maven坐标:org.apache.kerby:kerby-util:1.0.1; 标签:apache、kerby、util、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档...

    kerb-util-1.0.1-API文档-中文版.zip

    Maven坐标:org.apache.kerby:kerb-util:1.0.1; 标签:apache、kerby、kerb、util、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    前端开源库-topolr-util

    本文将深入探讨“topolr-util”这一前端开源库,它专为前端开发者提供了一系列实用的工具函数,旨在提升开发效率,简化代码逻辑。通过对“topolr-util”的了解和应用,我们可以更好地理解和掌握现代前端开发中的实用...

    java.util.ConcurrentModificationException 异常问题详解1

    Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...

Global site tag (gtag.js) - Google Analytics