V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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 · 2017-06-13 17:11:12 +08:00 · 3326 次点击
    这是一个创建于 2500 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一条简单的 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 条回复    2017-06-14 11:17:54 +08:00
    phttc
        1
    phttc  
       2017-06-13 17:43:26 +08:00
    ORDER BY 的时候用不到那个索引,,只有连接表的时候才用到索引
    wuxiaolin
        2
    wuxiaolin  
    OP
       2017-06-14 10:01:06 +08:00
    @phttc 瓶颈是在 order by 吗? 但是必须排序这个需要怎么优化
    bzzhou
        3
    bzzhou  
       2017-06-14 10:08:03 +08:00
    如果表规模才 20W,80ms 算很慢了(当然也得看服务器配置)

    初步判断 CPU 都消耗在 ORDER BY 排序这里了,可以把 order by 先去掉验证一下
    msg7086
        4
    msg7086  
       2017-06-14 11:17:54 +08:00
    你有试过简单粗暴地拆成两句查询么 = =
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4824 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:37 · PVG 13:37 · LAX 22:37 · JFK 01:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.