MySQL show full processlist 以及group_concat_max_len参数设置

Posted 遠離塵世の方舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL show full processlist 以及group_concat_max_len参数设置相关的知识,希望对你有一定的参考价值。

查询mysql当前正在运行的SQL语句:
show full processlist或者show processlist

结果都是从information_schema.processlist表取的结果,所以也可以主直接查询该表
select info from information_schema.processlist;

但是如果 info 字段值(SQL语句)长度字节超过1024 则会被截断。

mysql> show variables like ‘group_concat_max_len‘ ;--默认长度为1024
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| group_concat_max_len | 1024 |
+----------------------+-------+

mysql> SELECT @@global.group_concat_max_len;
+-------------------------------+
| @@global.group_concat_max_len |
+-------------------------------+
| 1024 |
+-------------------------------+

临时解决办法:
如果是生产环境下,不能擅自重启MySQL服务,则可以通过语句设置group_concat的作用范围,如:
SET GLOBAL group_concat_max_len=-1;
或者
SET SESSION group_concat_max_len=-1;

(-1为最大值或根据实际需求设置长度)。
之后再执行show full processlist,就可以看到完整的info字段值了。

mysql> SET SESSION group_concat_max_len=-1;---奇怪,按照该方法设置Session和Global的group_concat_max_len为-1之后,查看结果变为4。
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show variables like "%len";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| group_concat_max_len | 4 |
+----------------------+-------+
3 rows in set (0.00 sec)


show processlist时,info字段同样被截断。所以,上面的设置没有生效。

重新设置为group_concat_max_len=20480;

mysql> SET SESSION group_concat_max_len=20480;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like "%len";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| group_concat_max_len | 20480 |
+----------------------+-------+
3 rows in set (0.00 sec)

mysql>

之后再执行showshow processlist时,info字段没有被截断,设置生效。

但是,该设置只对当前会话生效,我们可以在mysql的配置文件my.cnf配置文件中,新增加如下内容:
group_concat_max_len=20480

需要重启mysqld服务才生效。

 

以上是关于MySQL show full processlist 以及group_concat_max_len参数设置的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 中 show full processlist

mysql 的show processlist和show full processlist区别

mysql 解决死锁 - show full processlist

MySQL中 show processlist 和 show full processlist命令详解

MySQL中 show processlist 和 show full processlist命令详解

show full processlist,MySQL 优化第7天学习