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
    );

  • 相关阅读:
    结构化数据上的 TopN 运算
    Excel 分组后计算
    主流开源 BI 产品对比
    职场人员该学什么程序语言
    Python 并不合适职场编程,SPL 才行
    v-if 和 v-show 到底有什么区别 何时用v-if 何时用v-show
    APP 在退出登录 页面 注意事项
    APP 项目,登录注册页面,注意事项
    input 文本内容 ,才用正则过滤后,内容没有实时更新 的 处理方法
    实现 长按复制粘贴文本
  • 原文地址:https://www.cnblogs.com/xiaohanlin/p/15602483.html
Copyright © 2011-2022 走看看