未分類 21 9 月 2020 单表千万级数据库, 并发同一查询时速度慢, 有解决的方法吗? 单表千万级数据库, 并发同一查询时速度慢, 有解决的方法吗? 資深大佬 : RickyC 4 建立了索引, 在单次查询时性能还行, 不到 1 秒 但是假如 20 线程, 同时打开同一查询, 打开时间就在 8 秒左右了 是 PHP 网站 有什么解决方法吗? 大佬有話說 (20) 資深大佬 : shakeyo 单次查询几百 ms 已经算慢了吧,建议还是优化下查询语句或者数据字段,表是否划分合理要是一致性要求不高,也可以走多个 mysql 节点,分流处理 資深大佬 : pcbl 同时间的相同查询那么多,不应该扔到 redis 或者其他缓存中吗? 資深大佬 : blless 问就是分库分表 資深大佬 : zoharSoul 没执行计划也没表结构, 这个很难分析…正常来说 单表千万的话还好 資深大佬 : wangyzj 千万还好吧 資深大佬 : keepeye 数据库不是单独服务器吧? 資深大佬 : xmh51 先 EXPLAIN sql 看下 sql 的执行状态,另外程序也需要看下 有时候不一定是 mysql 的问题 資深大佬 : guijianshi01 这种慢查询单独走一个从库.这样不阻塞正常业务流程 資深大佬 : bruce0 优化也就常见的几种吧,首先优化 sql 语句,分表分库,Redis,多主机做主从分离 資深大佬 : newtype0092 我刚试了下在过亿的表里单 int 类型索引查询不到 20 毫秒 資深大佬 : wakzz 先晒一下 sql 和表索引结构,单 sql 耗时 1 秒还是挺久的 資深大佬 : limuyan44 又到了上帝才知道的环节,没准你索引加的烂呢,没准 sql 写的烂呢,没准根本没有 20 个人用呢。 資深大佬 : littlewing 千万 不到 1 秒,绝对没用上索引吧 資深大佬 : cnoder 一条一秒也有点长,看下 sql 資深大佬 : huntcool001 把你 schema 晒出来. 正常不可能这样的. 資深大佬 : realpg 单查询 1s 这叫不慢?!! 資深大佬 : 594duck mysql 到千万就是瓶颈,扫描行数多一点就是全盘扫描。你的表宽一点也是悲剧 資深大佬 : chogath 检查索引,SQL,都没问题的话检查下 MySQL 版本,还没问题的话考虑上缓存中间件( Redis )或者搜索引擎( Elasticsearch ) 資深大佬 : PIECExx 1.想办法优化表结构+索引; 2.我看前面已经有人提了,就是加一层 redis,每次相同条件的 sql,查完入 redis,下次再有并发来就不查库,说白了,做这一层其实相当于把原有的结构打破了重做,原先是所有操作直接连库,现在就不行了,是比较麻烦的,不过做完肯定基本是能用的; 3.拆表,这个更麻烦,我都懒得解释了。。。。 主 資深大佬 : RickyC @PIECExx 谢谢, redis 我过后想想