linpf
V2EX  ›  数据库

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

  •  
  •   linpf · Jun 19, 2017 · 3093 views
    This topic created in 3428 days ago, the information mentioned may be changed or developed.

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

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

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

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

    所以就是阿里云给的配置是 CPU 性能过剩?
    misaka19000
    misaka19000
    Jun 19, 2017
    12
    @linpf #11 只能说你的程序是 IO 密集型程序
    Mirana
    Mirana
    Jun 20, 2017
    13
    找个同样配置的物理机器,同样的压力测试试试

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

    如果楼主想深入分析,建议应该再提供连接池的配置大小,实际使用活跃链接数量,查询数量平均,峰值,然后还有读写比等信息,是否设计事务操作,联合查询等信息供大家分析。
    buliugu
    buliugu
    Jun 20, 2017
    18
    当索引之类的数据库优化都做完以后,sql 最简单的优化就是换一块 ssd 口牙(逃
    linpf
    linpf
    OP
    Jun 20, 2017
    19
    @Jakesoft mysql 压力不小,遇到几个慢查询就数据库直接 CPU 飙升 100%崩溃了。
    akira
    akira
    Jun 25, 2017
    20
    @linpf 慢查询又是另外一回事了,要根据 sql 以及对应的表结构和索引 来具体分析了
    Hozzz
    Hozzz
    Jul 5, 2017
    21
    是 Linux 主机吗?是的话贴个 vmstat 1 10 上来看看(输出这个之前记得把查询跑起来)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   721 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 22:43 · PVG 06:43 · LAX 14:43 · JFK 17:43
    ♥ Do have faith in what you're doing.