V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raysonlu
V2EX  ›  程序员

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

  •  
  •   raysonlu · 2019-09-16 19:38:22 +08:00 · 2169 次点击
    这是一个创建于 1904 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    11 条回复    2019-09-17 11:52:21 +08:00
    AngryPanda
        1
    AngryPanda  
       2019-09-16 19:44:38 +08:00
    这种事情抛开业务去谈,你找不到答案。

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

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

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

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

    另外,2000qps 的话确实可以考虑上好点的机器了,比如说便宜的独服,i3 或者 i5 的机器,可能比你的双核 VPS 快得多。
    lihongjie0209
        11
    lihongjie0209  
       2019-09-17 11:52:21 +08:00
    先无脑升级, 直到你觉得价钱无法接受的时候再去研究优化
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3556 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:58 · PVG 12:58 · LAX 20:58 · JFK 23:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.