我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

MySQL中SHOW PROCESSLIST和performance_schema.processlist的SQL长度限制

来源:网络 更新时间:2024-06-17 11:32:33

在 MySQL 中,如果我们想查看实例当前正在执行的 SQL,常用的命令是 SHOW PROCESSLIST

但如果 SQL 过长的话,就会被截断。这时,我们一般会用 SHOW FULL PROCESSLIST 来查看完整的 SQL。

最近碰到一个 case,发现无论是使用 SHOW PROCESSLIST SHOW FULL PROCESSLIST ,还是 performance_schema.processlist 都无法获取完整的 SQL,反倒 information_schema.processlist 可以。

最后发现, SHOW FULL PROCESSLIST 无法查看完整的 SQL 竟然与 performance_schema_show_processlist 参数有关。

SHOW PROCESSLIST 的实现方式

SHOW PROCESSLIST 默认是从线程管理器(Global_THD_manager)中获取线程信息。

这种实现方式会持有全局互斥锁。在负载高的场景,会对数据库的性能有一定的负面影响。

所以一般都推荐使用 performance_schema.processlist,这种方式不会持有全局锁。

在 MySQL 8.0.22 中,引入了 performance_schema_show_processlist 参数,可设置 SHOW PROCESSLIST 的实现方式。

当该参数设置为 ON 时,会使用 performance_schema.processlist 的实现方式。

当参数设置为 OFF(默认值) 时,会使用传统的实现方式。

三种不同查询方式对 SQL 的长度限制

下面我们看看 SHOW PROCESSLIST, information_schema.processlist, performance_schema.processlist 这三种不同的查询方式对 SQL 的长度限制。

因为 SQL 是在 INFO 列中存储的,所以,SQL 的最大长度实际上是由 INFO 列决定的。