菜鸟问一个数据库性能的问题

2017-06-19 17:34:38 +08:00
 linpf

可能在大神眼里有些幼稚……但是原谅我的菜,斗胆问个问题:

我买的阿里云 mysql 数据库,CPU 使用率一直都保持在 2%以内。请求量加大的情况下,发现 mysql 的查询速度大量降低,但是数据库 CPU 使用率也不提高,感觉数据库 CPU 被大量浪费。能否提升 CPU 使用率到 50%左右,使得 mysql 查询速度降低?

内存使用率一直稳定在 25~30%,慢查询的时候发现内存利用率会上升。为啥 CPU 就不会提升利用率来加快查询呢? 难道是因为 mysql 操作一般用不到 CPU 来计算?

1961 次点击
所在节点    数据库
21 条回复
Yinz
2017-06-19 17:44:43 +08:00
大量简单查询一般是磁盘 IO 吧?
MasterC
2017-06-19 17:47:31 +08:00
IO 开销,数据库最大连接数等等 都有可能影响查询性能,瓶颈不一定在 cpu 上
silentime
2017-06-19 20:15:40 +08:00
你的目的是为了提升查询性能,跟是否消耗数据库资源是两回事啊,提升查询性能,最直接的先看看有没有索引
changwei
2017-06-19 20:22:07 +08:00
提升 cpu 使用率降低查询速度可以试试看 while 1=1
misaka19000
2017-06-19 21:33:12 +08:00
CPU 再快也没法提升 IO 的速度,数据库使用 B 树已经比较好的解决了 IO 查询比较慢的问题(空间换时间),想要速度快可以上 NoSQL 或者 SSD
we3613040
2017-06-19 21:44:44 +08:00
CPU 问题、内存问题、磁盘 IO 问题、网络问题这些都有可能是效率低,你先搞清楚是因为什么效率低,才能对症下药,不用只从 cpu 考虑。
realpg
2017-06-19 21:56:41 +08:00
先优化好你的查询再说吧……
跟你的 CPU 不发生关系
Jacklee
2017-06-19 22:20:52 +08:00
数据库的查询是 IO 密集型操作,所以查询瓶颈就在 IO 上了,所以 CPU 并不能帮上忙。redis、memcache 这类数据库,之所以查询快,也就是因为它们把数据放到内存里而不是硬盘上。所以,从查询优化上处理吧
Immortal
2017-06-19 22:43:53 +08:00
总感觉是连接数没上去
akira
2017-06-19 22:54:09 +08:00
普通查询是不怎么消耗 cpu 计算的。 根据你的需求,购买低一级的 rds 配置应该就够了
linpf
2017-06-19 22:57:27 +08:00
@Yinz
@MasterC
@silentime
@changwei
@misaka19000
@we3613040
@realpg
@Jacklee
@Immortal
@akira

所以就是阿里云给的配置是 CPU 性能过剩?
misaka19000
2017-06-19 23:35:48 +08:00
@linpf #11 只能说你的程序是 IO 密集型程序
Mirana
2017-06-20 00:03:35 +08:00
找个同样配置的物理机器,同样的压力测试试试

估计是阿里云偷用户的 CPU
DaPanda
2017-06-20 06:43:15 +08:00
内存会加大是因为有些操作会更多利用 buffer,从而减少开销最大的硬盘 IO。
而 CPU 是不怎么会用到的
Immortal
2017-06-20 09:05:54 +08:00
@linpf 不是 是代码和设置上的问题 查看下 mysql 的连接数配置信息 如果代码上的库有连接池 看下连接池的上下限配置信息
Jakesoft
2017-06-20 09:38:20 +08:00
这说明你的 mysql 不忙
zjq426
2017-06-20 09:40:52 +08:00
直觉是 mysql 并不能让一条 query 在多核上并行,所以提高 cpu 使用率不是一个可行的方法。楼主可能需要先了解到如果需要磁盘 io 操作比内存操作是会慢很多的,内存又比 cpu 要慢很多,所以更慢的地方慢了,很快的地方闲着是很正常的。已经有朋友给出思路是增加内存。

如果楼主想深入分析,建议应该再提供连接池的配置大小,实际使用活跃链接数量,查询数量平均,峰值,然后还有读写比等信息,是否设计事务操作,联合查询等信息供大家分析。
buliugu
2017-06-20 11:37:20 +08:00
当索引之类的数据库优化都做完以后,sql 最简单的优化就是换一块 ssd 口牙(逃
linpf
2017-06-20 22:14:34 +08:00
@Jakesoft mysql 压力不小,遇到几个慢查询就数据库直接 CPU 飙升 100%崩溃了。
akira
2017-06-25 17:36:23 +08:00
@linpf 慢查询又是另外一回事了,要根据 sql 以及对应的表结构和索引 来具体分析了

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

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

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

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

© 2021 V2EX