› 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
wuxiaolin
V2EX  ›  MySQL

简单的查询, cpu 占用高,瓶颈在哪里?

  •  
  •   wuxiaolin · Jun 13, 2017 · 4456 views
    This topic created in 3399 days ago, the information mentioned may be changed or developed.
    我有一条简单的 sql,如下
    SELECT *
    FROM table_a w
    LEFT JOIN table_b u ON w.u = u.u
    WHERE w.u = 20 AND w.t in(3,4,5)
    ORDER BY w.id DESC
    LIMIT 0,10
    对应的条件都有索引,查询也很快,0.08 秒
    表数据也才 20w
    但是在做压测时,每秒并发到 150 个失败率很高 50%+,查询服务器负载 cpu 占用很高
    explain,索引都有命中,就是一个索引命中条数是 9w 条
    这里具体的瓶颈是在哪里呢,有什么优化的方法?
    4 replies  •  2017-06-14 11:17:54 +08:00
    phttc
        1
    phttc  
       Jun 13, 2017
    ORDER BY 的时候用不到那个索引,,只有连接表的时候才用到索引
    wuxiaolin
        2
    wuxiaolin  
    OP
       Jun 14, 2017
    @phttc 瓶颈是在 order by 吗? 但是必须排序这个需要怎么优化
    bzzhou
        3
    bzzhou  
       Jun 14, 2017
    如果表规模才 20W,80ms 算很慢了(当然也得看服务器配置)

    初步判断 CPU 都消耗在 ORDER BY 排序这里了,可以把 order by 先去掉验证一下
    msg7086
        4
    msg7086  
       Jun 14, 2017
    你有试过简单粗暴地拆成两句查询么 = =
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   794 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:51 · PVG 05:51 · LAX 14:51 · JFK 17:51
    ♥ Do have faith in what you're doing.