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

  • 相关阅读:
    小程序 视频
    b161: NOIP2007 4.Hanoi双塔问题
    命名规则、.gitignore、freopen()
    c++学习记录(九)
    c++学习笔记(八)
    2020面向对象程序设计寒假作业2
    c++学习记录(七)
    c++学习记录(六)
    c+学习记录(五)
    c++学习记录(四)
  • 原文地址:https://www.cnblogs.com/xiaohanlin/p/15602483.html
Copyright © 2020-2023  润新知