mysql 的配置应该如何选择和升级?

2019-09-16 19:38:22 +08:00
 raysonlu

最近公司业务量又上来了,白天看着 RDS 的 CPU 又要将近跑满,抱着“充钱就能好”的思想,不得不去升级配置了。

但为什么要升级配置,应该升到多少,以及如何预防并提起做好准备?排除了磁盘空间、内存、慢 SQL 问题,搜阅了不少资料,知道了什么 QPS,TPS 等等,但也停留在一个知道这些是啥、怎样观察到这些数值的程度,对于配置的升级找不到参考点。比如说,QPS 是 2000 左右,就会把 2 核 4G 的 mysql 机将近跑满 CPU 了?

类似这种运维、DBA 的问题,没有大神亲手带带真感觉迷茫,遇到问题未必找准方向,也未必能在网上搜到结果,本人 phper 想往运维架构方面发展,在小公司小团队里有很多实际接触的机会,奈何一只困在这个瓶颈找不到方向和方法突破。

求各路大神为小弟指(使)点(劲)迷(喷)津

2189 次点击
所在节点    程序员
11 条回复
AngryPanda
2019-09-16 19:44:38 +08:00
这种事情抛开业务去谈,你找不到答案。

[比如说,QPS 是 2000 左右,就会把 2 核 4G 的 mysql 机将近跑满 CPU 了?]

就说这个问题,2000QPS 是什么类型的查询?是否命中缓存,是否使用索引,扫描多少数据行,是否存在临时表,返回结果集多少,数据规模多大,都影响这个问题的回答。

变量太多了。
raysonlu
2019-09-16 20:00:58 +08:00
@AngryPanda 是的,这个我也知道,但我应该如何去判断和查找问题所在?
比如说 2 核 4G 的机应该大致能跑到怎样的性能?究竟是什么方面导致 CPU 跑高?有无什么方法可以一一排查?总不能看见控制台监控显示的 CPU 飙高,就充钱升级这么被动吧?
opengps
2019-09-16 20:46:48 +08:00
一切以压测为准!这就是够不够用的判断依据
gz911122
2019-09-16 23:06:47 +08:00
@raysonlu
可以先大致的看下高性能 mysql 这本书
有个大概的认知.

但是归根结底还是哪里不够加哪里,毕竟升级配置比重构代码省钱啊
raysonlu
2019-09-16 23:10:39 +08:00
@gz911122 那本天书,感觉不知道怎样看进去,总是看得似懂非懂的感觉。升配置是最快的方法,但这样盲目的升感觉也不是法子啊
lancerliu
2019-09-16 23:14:59 +08:00
先把慢查询都解决了吧
airfling
2019-09-17 08:46:54 +08:00
执行 sql :show full processlist 查看慢 SQL,这些 sql 该优化的优化,该建索引的建索引,如果还慢,你再升级
raysonlu
2019-09-17 09:36:34 +08:00
@lancerliu
@airfling 慢查询这些早就优化,甚至阿里的控制台也展示得明明白白的。
salamanderMH
2019-09-17 11:02:38 +08:00
看看慢查询,然后看看有没有命中索引
msg7086
2019-09-17 11:46:53 +08:00
2000qps 如果是简单查询,应该跑不满一个核心吧。
我之前写的 bt tracker 程序,好点的机器上单线程能跑出 10000qps 以上。
但是如果是比较复杂的查询,可能 200qps 就跑满核心了。
具体还是要看业务,查询复杂程度。

另外,2000qps 的话确实可以考虑上好点的机器了,比如说便宜的独服,i3 或者 i5 的机器,可能比你的双核 VPS 快得多。
lihongjie0209
2019-09-17 11:52:21 +08:00
先无脑升级, 直到你觉得价钱无法接受的时候再去研究优化

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/601280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX