1.MySQL线程管理常用命令

1
2
3
4
5
6
7
8
show processlist;           # 查看正在执行的SQL语句,看不全
show full processlist; # 查看正在执行的完整SQL语句,完整显示
show variables; # 查看数据库的参数信息,例如:my.cnf里参数的生效情况
show variables like "%"; # 配合like使用,精确查询
kill ID; # 杀掉线程,ID为show processlist;出来的ID号
show status; # 查看当前会话的数据库状态信息
show global status; # 查看整个数据库运行状态信息,很重要,要分析并要做好监控。
show engine innodb status; # 查看innodb引擎的性能状态

2.MySQL线程超时时间

背景:show processlist; 的时候有过多的 sleep 线程,把总的连接数占满了。

解决方法:设置线程超时时间

查看线程的超时时间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> show variables like "%timeout";
+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| connect_timeout | 10 | # 单位秒
| delayed_insert_timeout | 300 |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 60 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 | # 默认8小时
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 | # 默认8小时
+------------------------------+----------+
13 rows in set (0.01 sec)

设置线程的超时时间

wait_timeout 要与 interactive_timeout 一起修改才能起效。

1
2
3
4
5
6
7
8
# my.cnf配置(永久生效)
[mysqld]
interactive_timeout = 600 # 此参数设置后wait_timeout自动生效
wait_timeout = 600

# mysql全局配置(服务重启后失效)
mysql> set global wait_timeout = 600;
mysql> set global interactive_timeout = 600;

3.查看mysql全局运行状态

查看状态

1
2
3
show status;			            # 查看当前会话的数据库状态信息
show global status; # 查看整个数据库运行状态信息,很重要!
show status like '%select%'; # 查看当前执行了多少条select查询

4.查看thread

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show global status like "%thread%";
+------------------------------------------+-------+
| Variable_name | Value |
+------------------------------------------+-------+
| Delayed_insert_threads | 0 |
| Performance_schema_thread_classes_lost | 0 |
| Performance_schema_thread_instances_lost | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 0 |
| Threads_connected | 2 |
| Threads_created | 2 |
| Threads_running | 1 | # 正在运行的线程数,反应并发连接数
+------------------------------------------+-------+
8 rows in set (0.00 sec)