zoukankan      html  css  js  c++  java
  • mysql cpu占用 1500%问题优化

    在154服务器上经常发现mysql进程占用cpu高达1500%

    通过show full processlist  查看mysql的sql执行耗时情况,发现了大概20条如下

     SELECT * FROM e_instance_struct_8 tis where updatedate is not null and DATE_FORMAT(updatedate,'%Y-%m-%d')= CURDATE()

    和大概20条

    SELECT * FROM e_instance_step_status_16 tis WHERE updatedate IS NOT NULL AND DATE_FORMAT(updatedate,'%Y-%m-%d')= CURDATE()

    上述这些sql每个time都是5-6秒

    e_instance_struct_  和  e_instance_step_status_ 都进行了分表 各自有20个分表

    e_instance_struct_  20个表总数据量大概2000万

    e_instance_step_status_  20个表总数据量大概5000万

    用explain SELECT * FROM e_instance_struct_8 tis where updatedate is not null and DATE_FORMAT(updatedate,'%Y-%m-%d')= CURDATE()

    和explain SELECT * FROM e_instance_step_status_16 tis WHERE updatedate IS NOT NULL AND DATE_FORMAT(updatedate,'%Y-%m-%d')= CURDATE()

    查看执行计划,发现这些sql语句都是全表扫描。

    调用上述sql的方法是登录的时候调用getSiteDailySummary 接口进行统计,我测试了一下,只要一登录系统,cpu就飙升到1000-1500%然后几秒钟之后恢复,

    初步判定就是如上sql导致的mysql cpu占用高的问题。

    解决方法:

        给40个表的updatedate字段都加上索引,并且把sql语句改为如下(因为DATE_FORMAT函数会索引失效)

    SELECT * FROM e_instance_struct_ tis where updatedate is not null and updatedate between concat(#{todayStr},' 00:00:00') and concat(#{todayStr},' 23:59:59')

    SELECT * FROM e_instance_step_status_ tis WHERE updatedate IS NOT NULL AND updatedate between concat(#{todayStr},' 00:00:00') and concat(#{todayStr},' 23:59:59')

     观察了1天,发现mysql的cpu占用率降到了100%-300%  效果明显


    /*==============================================================*/
    /* Index: e_instance_step_status_1_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_1_updatedate on e_instance_step_status_1
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_2_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_2_updatedate on e_instance_step_status_2
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_3_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_3_updatedate on e_instance_step_status_3
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_4_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_4_updatedate on e_instance_step_status_4
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_5_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_5_updatedate on e_instance_step_status_5
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_6_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_6_updatedate on e_instance_step_status_6
    (
    updatedate
    );


    /*==============================================================*/
    /* Index: e_instance_step_status_7_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_7_updatedate on e_instance_step_status_7
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_8_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_8_updatedate on e_instance_step_status_8
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_9_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_9_updatedate on e_instance_step_status_9
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_10_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_10_updatedate on e_instance_step_status_10
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_11_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_11_updatedate on e_instance_step_status_11
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_12_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_12_updatedate on e_instance_step_status_12
    (
    updatedate
    );


    /*==============================================================*/
    /* Index: e_instance_step_status_13_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_13_updatedate on e_instance_step_status_13
    (
    updatedate
    );


    /*==============================================================*/
    /* Index: e_instance_step_status_14_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_14_updatedate on e_instance_step_status_14
    (
    updatedate
    );


    /*==============================================================*/
    /* Index: e_instance_step_status_15_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_15_updatedate on e_instance_step_status_15
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_16_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_16_updatedate on e_instance_step_status_16
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_17_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_17_updatedate on e_instance_step_status_17
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_18_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_18_updatedate on e_instance_step_status_18
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_19_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_19_updatedate on e_instance_step_status_19
    (
    updatedate
    );

    /*==============================================================*/
    /* Index: e_instance_step_status_20_updatedate */
    /*==============================================================*/
    create index e_instance_step_status_20_updatedate on e_instance_step_status_20
    (
    updatedate
    );

    create index e_instance_struct_1_updatedate on e_instance_struct_1
    (
    updatedate
    );

    create index e_instance_struct_2_updatedate on e_instance_struct_2
    (
    updatedate
    );

    create index e_instance_struct_3_updatedate on e_instance_struct_3
    (
    updatedate
    );

    create index e_instance_struct_4_updatedate on e_instance_struct_4
    (
    updatedate
    );

    create index e_instance_struct_5_updatedate on e_instance_struct_5
    (
    updatedate
    );

    create index e_instance_struct_6_updatedate on e_instance_struct_6
    (
    updatedate
    );

    create index e_instance_struct_7_updatedate on e_instance_struct_7
    (
    updatedate
    );

    create index e_instance_struct_8_updatedate on e_instance_struct_8
    (
    updatedate
    );

    create index e_instance_struct_9_updatedate on e_instance_struct_9
    (
    updatedate
    );

    create index e_instance_struct_10_updatedate on e_instance_struct_10
    (
    updatedate
    );

    create index e_instance_struct_11_updatedate on e_instance_struct_11
    (
    updatedate
    );

    create index e_instance_struct_12_updatedate on e_instance_struct_12
    (
    updatedate
    );

    create index e_instance_struct_13_updatedate on e_instance_struct_13
    (
    updatedate
    );

    create index e_instance_struct_14_updatedate on e_instance_struct_14
    (
    updatedate
    );

    create index e_instance_struct_15_updatedate on e_instance_struct_15
    (
    updatedate
    );

    create index e_instance_struct_16_updatedate on e_instance_struct_16
    (
    updatedate
    );

    create index e_instance_struct_17_updatedate on e_instance_struct_17
    (
    updatedate
    );

    create index e_instance_struct_18_updatedate on e_instance_struct_18
    (
    updatedate
    );

    create index e_instance_struct_19_updatedate on e_instance_struct_19
    (
    updatedate
    );

    create index e_instance_struct_20_updatedate on e_instance_struct_20
    (
    updatedate
    );

  • 相关阅读:
    Fiddler 的几个用法
    jQuery中ajax的使用和缓存问题解决 $getjson 与$get都会被IE缓存
    http与https的区别以及https的加密原理
    asp.net mvc通过预处理实现数据过滤和数据篡改。
    C# winform的WebBrowser非常规编程(强烈推荐)
    DES加密 java与.net可以相互加密解密的方法
    日常开发中常见的HTTP协议的状态码
    前端性能监控
    在手机的浏览器上通过连接打开App
    工作五年总结一二三流公司的常见特性
  • 原文地址:https://www.cnblogs.com/xiaohanlin/p/15602483.html
Copyright © 2011-2022 走看看