› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
amos15
V2EX  ›  MySQL

已定位出线上 MySQL 出现了慢查询,该怎么在线处理呢?

  •  
  •   amos15 · Nov 21, 2019 · 6214 views
    This topic created in 2503 days ago, the information mentioned may be changed or developed.

    如题,前提是 [已定位] 出了慢查询,要在不重启 MySQL 和关联的应用程序的情况下解决这个问题

    13 replies  •  2019-11-22 20:53:06 +08:00
    Jemini
        1
    Jemini  
       Nov 21, 2019 via iPhone   ❤️ 2
    不应该是抓写那个查询的人出来祭天吗😹
    hanxiV2EX
        2
    hanxiV2EX  
       Nov 21, 2019 via Android
    加索引
    crclz
        3
    crclz  
       Nov 22, 2019
    如果慢查询出现在索引、表结构,那么要看当前版本的 mysql 是否支持不停机建索引。

    如果慢查询是因为不好的 sql 语句:
    假设应用程序有 n 个实例(n>=2),记现在服务端程序的版本为 v1。
    现在将解决了慢查询问题的服务端 v2 开发写出来。然后将 v1 实例逐个替换成 v2。
    如果只有一个实例,那么请开多个实例。
    weo0
        4
    weo0  
       Nov 22, 2019
    @hanxiV2EX 数据量大,不停机加索引,不会出问题吗,我司有一次就是有一个同事不停机加索引崩了……
    realpg
        5
    realpg  
       Nov 22, 2019
    针对那一条查询,DBA 和写的码农一起诊断
    是否能在数据库段优化,是否影响业务
    如果不能在数据库端优化,那就更改逻辑拆分成简单有效查询
    l8g
        6
    l8g  
       Nov 22, 2019
    这种情况只能看看能不能调整索引。
    不停机的话要看表的数据量和读写压力,否则业务高峰期进行的话有一定风险。
    我司调整索引一般是在凌晨没有什么请求量的情况下进行。
    当然如果显然是 SQL 写的效率低的话,更好的做法是肯定是修改代码重新发布,应用如果有多个实例的话影响也不会非常大。
    lihongjie0209
        7
    lihongjie0209  
       Nov 22, 2019
    你这个要求就像在线修复 BUG 一样
    b821025551b
        8
    b821025551b  
       Nov 22, 2019
    别无脑加索引,数据量大会把机器搞死掉的
    fuyufjh
        9
    fuyufjh  
       Nov 22, 2019
    @weo0 MySQL 5.7 开始 Add Index 就支持 Online 了。只要别在负载太高的时候做就行。
    amos15
        10
    amos15  
    OP
       Nov 22, 2019
    @crclz @realpg @l8g @b821025551b @fuyufjh @realpg 谢谢哈
    是昨天被问到的,答了表索引索引设计不当,SQL 语句,连接数,MySQL 选错索引,QPS 等方面原因,对应的解决方法和工具也分别答了,大致和大神们说的差不多,同时也提到了慢查询的检查和定位方案等,但是对方好像还在期待更好的解决方案
    amos15
        11
    amos15  
    OP
       Nov 22, 2019
    @Jemini 难道这就是终极方案Σ( ° △ °|||)︴
    amos15
        12
    amos15  
    OP
       Nov 22, 2019
    @fuyufjh online DDL 是 5.6 版本就有的,这个我觉得应该是一个比较常规的操作,早期主要通过 copy-trigger-rename 的方式也答了
    amos15
        13
    amos15  
    OP
       Nov 22, 2019
    查了下资料,5.7 的有插件可增加 rewrite query 方案,8.0 的增加了线上加 column 的操作,如果真是想问这里的话我觉得有点过了
    可能还是因为停留在了操作层和 server 层,没深入到引擎原理层去答
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1035 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 18:16 · PVG 02:16 · LAX 11:16 · JFK 14:16
    ♥ Do have faith in what you're doing.