别怕!MySQL引起的CPU消耗过大,我有办法

别怕!MySQL引起的CPU消耗过大,我有办法

大家好,又见面了,我是全栈君。

谁在消耗cpu?

用户+系统+IO等待+软硬中断+空闲
别怕!MySQL引起的CPU消耗过大,我有办法

别怕!MySQL引起的CPU消耗过大,我有办法

祸首是谁?

用户

用户空间CPU消耗,各种逻辑运算

正在进行大量tps
函数/排序/类型转化/逻辑IO访问…

用户空间消耗大量cpu,产生的系统调用是什么?那些函数使用了cpu周期?
参考
Linux 性能优化解析
MySQL 几种调式分析利器

IO等待

等待IO请求的完成

此时CPU实际上空闲

如vmstat中的wa 很高。但IO等待增加,wa也不一定会上升(请求I/O后等待响应,但进程从核上移开了)
别怕!MySQL引起的CPU消耗过大,我有办法

别怕!MySQL引起的CPU消耗过大,我有办法

产生影响

用户和IO等待消耗了大部分cpu

吞吐量下降(tps)
查询响应时间增加
慢查询数增加
对mysql的并发陡增,也会产生上诉影响

别怕!MySQL引起的CPU消耗过大,我有办法

如何减少CPU消耗?

减少等待

减少IO量

SQL/index,使用合适的索引减少扫描的行数(需平衡索引的正收益和维护开销,空间换时间)

提升IO处理能力

加cache/加磁盘/SSD

别怕!MySQL引起的CPU消耗过大,我有办法

减少计算

减少逻辑运算量

  • 避免使用函数,将运算转移至易扩展的应用服务器中
    如substr等字符运算,dateadd/datesub等日期运算,abs等数学函数

  • 减少排序,利用索引取得有序数据或避免不必要排序
    如union all代替 union,order by 索引字段等

  • 禁止类型转换,使用合适类型并保证传入参数类型与数据库字段类型绝对一致
    如数字用tiny/int/bigint等,必需转换的在传入数据库之前在应用中转好

  • 简单类型,尽量避免复杂类型,降低由于复杂类型带来的附加运算。更小的数据类型占用更少的磁盘、内存、cpu缓存和cpu周期

  • ….

减少逻辑IO量

  • index,优化索引,减少不必要的表扫描
    如增加索引,调整组合索引字段顺序,去除选择性很差的索引字段等等

  • table,合理拆分,适度冗余
    如将很少使用的大字段拆分到独立表,非常频繁的小字段冗余到“引用表”

  • SQL,调整SQL写法,充分利用现有索引,避免不必要的扫描,排序及其他操作
    如减少复杂join,减少order by,尽量union all,避免子查询等

  • 数据类型,够用就好,减少不必要使用大字段
    如tinyint够用就别总是int,int够用也别老bigint,date够用也别总是timestamp

  • ….

别怕!MySQL引起的CPU消耗过大,我有办法

减少query请求量(非数据库本身)

  • 适当缓存,降低缓存数据粒度,对静态并被频繁请求的数据进行适当的缓存
    如用户信息,商品信息等

  • 优化实现,尽量去除不必要的重复请求
    如禁止同一页面多次重复请求相同数据的问题,通过跨页面参数传递减少访问等

  • 合理需求,评估需求产出比,对产出比极端底下的需求合理去除

  • ….

别怕!MySQL引起的CPU消耗过大,我有办法

升级cpu

  • 若经过减少计算和减少等待后还不能满足需求,cpu利用率还高T_T

  • 是时候拿出最后的杀手锏了,升级cpu,是选择更快的cpu还是更多的cpu了?

    • 低延迟(快速响应),需要更快的cpu(每个查询只能使用一个cpu)

    • 高吞吐,同时运行很多查询语句,能从多个cpu处理查询中收益

参考
《高性能MySQL》
《图解性能优化》
大部分整理自《MySQL Tuning For CPU Bottleneck》

别怕!MySQL引起的CPU消耗过大,我有办法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111866.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • elasticsearch

    elasticsearch

    2021年5月28日
    143
  • 小明加密通道进入_门禁系统跟闸机通道的区分是什么?功能是一样吗

    小明加密通道进入_门禁系统跟闸机通道的区分是什么?功能是一样吗门禁系统属于一卡通系统的范畴。它是以中央处理器为核心,由控制器、信息采集器和电控锁组成的控制网络系统。通过系统的信息读取和处理,实现了各种门锁开关的自动控制。根据信息阅读的方式可以分为:插卡式、感应式、图像检测式、双眼虹膜识别式等。他们的技术含量和体系工程预算顺序先后提高。且融合三辊闸、摆闸、翼闸等多种入口处监管设施,保持更智能。门禁用到ID和IC两种卡片,IC门禁有加密功能,存贮容量也大,广泛用…

    2022年6月11日
    64
  • PyCharm教程[通俗易懂]

    PyCharm教程[通俗易懂]Pycharm介绍Pycharm安装Pycharm了解基础知识Pycharm快捷键Pycharm快捷方式PycharmOmniPycharmMacrosPycharmMicrosPycharm改进和编写代码PycharmConsolePycharmshellPycharm调试Pycharm版本控制集成PycharmHTML和CSS集成Py…

    2022年8月25日
    5
  • pycharm专业版永久激活码-激活码分享

    (pycharm专业版永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    1.9K
  • 简单的udp攻击_udp flood攻击

    简单的udp攻击_udp flood攻击由于本人很菜,这个代码是改别人的.呵呵.可以在公司的局域网里搞搞坏,呵呵.我是在ubuntu8.04下的,需要gcc编译.这个也添加了广播,整个网段的人都能收到了#include#include#include#include//ip#include//tcp#include#includeunsignedshortip_su…

    2022年10月2日
    4
  • 统计机器学习-Multinoulli分布、多项式分布

    统计机器学习-Multinoulli分布、多项式分布Multinoulli分布(多元伯努利分布):模型:       Mu(p)Mu(p)Mu(p)       d面????获得每一面的概率: p1,p2,…,pdp_1,p_2,…,p_dp1​,p2​,…,pd​分布函数:p(x∣p)=∏k=1dpkxkp(x|p)=\prod_{k=1}^dp_k^{x_k}p(x∣p)=k=1∏d​pkxk​​E(X)=pE(X)=pE(…

    2022年8月31日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号