二.解决
1.首先从自身sql入手,把sql放入navicat执行一次,看看需要多久,sql军规是否遵守,*,in等是否出现
2.最大连接数是否不满足当前连接数,考虑扩大?
3.索引优化,常用字段做索引,而且txt等数据类型不要做索引
4.分库分表,有的库表专门做查询
5.数据库开启缓存
6.服务器硬件升级
分分钟解决MySQL查询速度慢与性能差:https://www.jianshu.com/p/6641cfeb231c
开启慢查询
show engines;
查看慢查询时间
show variables like 'slow%';
查看设置多久是慢查询
show variables like 'long%';
修改慢查询时间
set long_query_time=1;
打开慢查询记录日志
set global slow_query_log='ON';
连接数是否够
查看哪些线程正在运行
show full processlist
查看最大连接数
show variables like '%max_connections%';
当前连接数
show status like 'Threads_connected%';
查看线程数设置合理否
如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
Threads_created表示创建过的线程数,如果发现Threads_created值过大的话, 表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器
thread_cache_size配置:
1. mysql> show variables like 'thread_cache_size';
2. +-------------------+-------+
3. | Variable_name | Value |
4. +-------------------+-------+
5. | thread_cache_size | 64 |
6. +-------------------+-------+
Threads_created表示创建过的线程数,通过查看Threads_created就可以查看MySQL服务器的进程状态。
1. mysql> show global status like 'Thread%';
2. +-------------------+-------+
3. | Variable_name | Value |
4. +-------------------+-------+
5. | Threads_cached | 46 |
6. | Threads_connected | 2 |
7. | Threads_created | 570 |
8. | Threads_running | 1 |
9. +-------------------+-------+
示例中的服务器还是挺健康的。
1.show status
Threads_connected 当前的连接数
Connections 试图连接到(不管是否成功)MySQL服务器的连接数。
Max_used_connections 服务器启动后已经同时使用的连接的最大数量。