Java架构技术进阶

阿里云面试官:如果是MySQL引起的CPU消耗过大,你会如何优化

2020-03-02  本文已影响0人  爱码士人员

推荐阅读:(BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等

2020年Java面试复盘,收获Offer,金三银四程序员面试精装版pdf,分享给跳槽面试的程序员

最近,有同学参加阿里云的面试,被问到:如果是MySQL引起的CPU消耗过大,你会如何优化?他说,这个问题他第一次遇到,当时一头雾水,不知道该如何回答,还好他当时机制,说MySQL底层不是他研究的重点,所以面试官没有再深入这块~~~

因此,我们在网上找到一篇能够解答该问题的文章,希望能够帮助到各位同学。原文内容如下:

# 谁在消耗cpu?

用户+系统+IO等待+软硬中断+空闲

用户+系统+IO等待+软硬中断+空闲

image image

祸首是谁?

用户

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

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

IO等待

等待IO请求的完成

此时CPU实际上空闲如vmstat中的wa 很高。但IO等待增加,wa也不一定会上升(请求I/O后等待响应,但进程从核上移开了)

image image

产生影响

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

如何减少CPU消耗?

减少等待

减少IO量

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

提升IO处理能力

加cache/加磁盘/SSD

减少计算

减少逻辑运算量

减少逻辑IO量

image

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

image

升级cpu

参考

上一篇下一篇

猜你喜欢

热点阅读