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
牛客网
RickyC
V2EX  ›  MySQL

单表千万级数据库, 并发同一查询时速度慢, 有解决的方法吗?

  •  
  •   RickyC · 39 天前 · 1636 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。
    建立了索引, 在单次查询时性能还行, 不到 1 秒

    但是假如 20 线程, 同时打开同一查询, 打开时间就在 8 秒左右了

    是 PHP 网站

    有什么解决方法吗?
    20 条回复    2020-09-22 16:39:21 +08:00
    shakeyo
        1
    shakeyo   39 天前
    单次查询几百 ms 已经算慢了吧,建议还是优化下查询语句或者数据字段,表是否划分合理
    要是一致性要求不高,也可以走多个 mysql 节点,分流处理
    pcbl
        2
    pcbl   39 天前 via iPhone
    同时间的相同查询那么多,不应该扔到 redis 或者其他缓存中吗?
    blless
        3
    blless   39 天前 via Android
    问就是分库分表
    zoharSoul
        4
    zoharSoul   39 天前
    没执行计划也没表结构, 这个很难分析...
    正常来说 单表千万的话还好
    wangyzj
        5
    wangyzj   39 天前
    千万还好吧
    keepeye
        6
    keepeye   39 天前
    数据库不是单独服务器吧?
    xmh51
        7
    xmh51   39 天前
    先 EXPLAIN sql 看下 sql 的执行状态,另外程序也需要看下 有时候不一定是 mysql 的问题
    guijianshi01
        8
    guijianshi01   39 天前
    这种慢查询单独走一个从库.这样不阻塞正常业务流程
    bruce0
        9
    bruce0   39 天前
    优化也就常见的几种吧,首先优化 sql 语句,分表分库,Redis,多主机做主从分离
    newtype0092
        10
    newtype0092   39 天前
    我刚试了下在过亿的表里单 int 类型索引查询不到 20 毫秒
    wakzz
        11
    wakzz   39 天前
    先晒一下 sql 和表索引结构,单 sql 耗时 1 秒还是挺久的
    limuyan44
        12
    limuyan44   39 天前
    又到了上帝才知道的环节,没准你索引加的烂呢,没准 sql 写的烂呢,没准根本没有 20 个人用呢。
    littlewing
        13
    littlewing   39 天前 via iPhone
    千万 不到 1 秒,绝对没用上索引吧
    cnoder
        14
    cnoder   39 天前
    一条一秒也有点长,看下 sql
    huntcool001
        15
    huntcool001   39 天前
    把你 schema 晒出来. 正常不可能这样的.
    realpg
        16
    realpg   38 天前
    单查询 1s 这叫不慢?!!
    594duck
        17
    594duck   38 天前 via iPhone
    mysql 到千万就是瓶颈,扫描行数多一点就是全盘扫描。你的表宽一点也是悲剧
    chogath
        18
    chogath   38 天前
    检查索引,SQL,都没问题的话检查下 MySQL 版本,还没问题的话考虑上缓存中间件( Redis )或者搜索引擎( Elasticsearch )
    PIECExx
        19
    PIECExx   38 天前
    1.想办法优化表结构+索引; 2.我看前面已经有人提了,就是加一层 redis,每次相同条件的 sql,查完入 redis,下次再有并发来就不查库,说白了,做这一层其实相当于把原有的结构打破了重做,原先是所有操作直接连库,现在就不行了,是比较麻烦的,不过做完肯定基本是能用的; 3.拆表,这个更麻烦,我都懒得解释了。。。。
    RickyC
        20
    RickyC   38 天前
    @PIECExx 谢谢, redis 我过后想想
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2120 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 16:25 · PVG 00:25 · LAX 09:25 · JFK 12:25
    ♥ Do have faith in what you're doing.