防止SQL语句在"性能报告"部分中被MySQL的Workbench截断

Meh*_*ran 6 mysql performance mysql-workbench

最近我被介绍了MySQL的新功能:performance_schema,它真棒.特别是当它与MySQL Workbench一起使用时Performance Reports.我发现该High Cost SQL Statements部分非常有用和实用.它只有一个缺点,持有执行的SQL语句的SQL列在很长一段时间内被截断.

我相信它被Workbench而不是performance_schema截断了,但我没有可靠的证据证明它.有谁知道如何拥有完整版本的SQL?

Meh*_*ran 8

我设法弄明白了.

MySQL Workbench的仪表板中显示的信息是使用sys数据库中定义的一系列视图提取的.提到的视图是基于performance_schema数据库中的表创建的.负责保存SQL语句的字段驻留在sys.x$statement_analysis视图中,该字段performance_schema.events_statements_summary_by_digest依次从表中获取.即使此字段被定义为LONGTEXT并且可以容纳与4G一样多的字符,但SQL语句在插入时会被截断.

将插入的最大字符长度DIGEST_TEXTmax_digest_length config 控制.它的默认值设置为1024,可以增加到1048576.但请记住,此配置只能在大于5.6.24的MySQL版本上设置!

  • 如果有人像我一样使用 MySQL Workbench 查看性能模式数据,那么您还需要转到 `Edit>Preferences>SQL Execution` 并设置 `Max。要显示的字段值长度为相同的最大值,否则语句将被截断(显示开头和结尾,但中间有省略号) (4认同)
  • 请注意,从5.6.26版开始,现在使用performance_schema_max_digest_length代替了max_digest_length。尽管当我着手弄清楚如何使这些语句字符串可读时,我的回答很好,但是我没想到找到答案。我什至没有真正去谷歌什么。谢谢 (2认同)