防止 SQL 语句被“性能报告”部分中的 MySQL 的 Workbench 截断
Preventing SQL statements from getting truncated by MySQL's Workbench in `Performance Reports` section
最近有人向我介绍了 MySQL 的新功能:performance_schema,它很棒。特别是当它与 MySQL Workbench 的 Performance Reports
结合时。我发现 High Cost SQL Statements
部分非常有用和实用。它只有一个缺点,保存已执行 SQL 语句的 SQL 列在长情况下会被截断。
我相信它被 Workbench 而不是 performance_schema 截断了,但我没有确凿的证据来证明这一点。有谁知道如何获得SQL的完整版本?
我自己想出来了。
MySQL Workbench 的仪表板中显示的信息是使用 sys
数据库中定义的一系列视图提取的。上述视图是基于 performance_schema
数据库中的 table 创建的。负责保存 SQL 语句的字段位于 sys.x$statement_analysis
视图中,该视图依次从 performance_schema.events_statements_summary_by_digest
table 中获取。尽管这个字段被定义为LONGTEXT
并且可以容纳4G的字符,但是SQL语句在插入时被截断了。
插入 DIGEST_TEXT
的最大字符长度由 max_digest_length 配置控制。它的默认值设置为 1024 并且可以增加到 1048576。但请记住,此配置可以设置在 MySQL 版本更高仅比 5.6.24!!
最近有人向我介绍了 MySQL 的新功能:performance_schema,它很棒。特别是当它与 MySQL Workbench 的 Performance Reports
结合时。我发现 High Cost SQL Statements
部分非常有用和实用。它只有一个缺点,保存已执行 SQL 语句的 SQL 列在长情况下会被截断。
我相信它被 Workbench 而不是 performance_schema 截断了,但我没有确凿的证据来证明这一点。有谁知道如何获得SQL的完整版本?
我自己想出来了。
MySQL Workbench 的仪表板中显示的信息是使用 sys
数据库中定义的一系列视图提取的。上述视图是基于 performance_schema
数据库中的 table 创建的。负责保存 SQL 语句的字段位于 sys.x$statement_analysis
视图中,该视图依次从 performance_schema.events_statements_summary_by_digest
table 中获取。尽管这个字段被定义为LONGTEXT
并且可以容纳4G的字符,但是SQL语句在插入时被截断了。
插入 DIGEST_TEXT
的最大字符长度由 max_digest_length 配置控制。它的默认值设置为 1024 并且可以增加到 1048576。但请记住,此配置可以设置在 MySQL 版本更高仅比 5.6.24!!