问题描述
- 如何解决mysql查询百万数据时出现大量sleep的进程
-
如何解决mysql查询百万数据时出现大量sleep的进程:
当使用jdbc 查询数据量为100多万的数据时,mysql会出现大量sleep的进程,然后程序便会卡死在那儿
解决方案
描述的有点泛泛,如果能把使用场景、涉及库表定义发一下会更容易分析。
大量sleep进程可能并不是问题,因为如果使用到连接池的话,一开始就是初始化一些连接,这些连接没有使用的话,在mysql看可能就是sleep的。
从你描述,感觉“查询数据量为100多万的数据”效率较低,这会增加mysql负载,可以考虑优化,从下面几个地方入手看看:
1、优化查询sql,尽量用上索引,避免嵌套子查询等
2、优化库表引擎,提搞并发
3、优化库表索引,提高检索效率
觉得有必要的话可以把相关程序逻辑和库表设计发出来看看
解决方案二:
1、百万的数据可以考虑分表
2、缓存进来,如果不需要实时的话,memcache和redis都是不错的选择
3、mysql主从,让查询走单独的服务器
解决方案三:
可以考虑nodejs,将部分数据暂时缓存在客户端,然后再统一写入数据库
解决方案四:
连接操作完了要释放掉呀
时间: 2024-09-21 04:46:39