MySQL 8.0 参考手册  / 第 5 章 MySQL 服务器管理  / 5.9 调试 MySQL  /  5.8.4 使用 DTrace 跟踪 mysqld

5.8.4 使用 DTrace 跟踪 mysqld

MySQL 服务器中的 DTrace 探测器旨在提供有关 MySQL 中查询执行的信息以及该过程中使用的系统的不同区域。探测器的组织和触发意味着整个查询的执行可以使用一级探测器(query-startquery-done)进行监视,但是通过监视其他探测器,您可以根据使用的锁连续获得有关查询执行的更多详细信息、排序方法甚至逐行和存储引擎级别的执行信息。

DTrace 探测器经过组织,以便您可以跟踪整个查询过程,从客户端的连接点开始,通过查询执行、行级操作,然后再次退出。您可以将探测器视为在典型的客户端连接/执行/断开连接序列期间的特定序列内触发,如下图所示。

图 5.1 DTrace 探测序列

典型客户端连接、执行、断开连接序列期间的 DTrace 探测序列示例。

全局信息在各个级别的 DTrace 探测器的参数中提供。全局信息,即连接 ID 和用户/主机以及相关的查询字符串,在关键级别(connection-startcommand-startquery-startquery-exec-start)提供。当您更深入地研究探测器时,假设您只对单个执行感兴趣(行级探测器仅提供有关数据库和表名的信息),或者您将行级探测器与名义上的父探测器组合在一起提供有关特定查询的信息。在提供每个探测器的格式和参数时给出了这方面的示例。

MySQL 包括对这些平台上的 DTrace 探测的支持:

  • SPARC、x86 和 x86_64 平台上的 Solaris 10 Update 5 (Solaris 5/08)

  • OS X / macOS 10.4 及更高版本

  • 带有 UEK 内核的 Oracle Linux 6 及更高版本(自 MySQL 5.6.20 起)

在这些平台上启用探测器应该是自动的。要在构建期间显式启用或禁用探测器,请使用 CMake-DENABLE_DTRACE=1的或 -DENABLE_DTRACE=0选项 。

如果非 Solaris 平台包括 DTrace 支持,则在该平台上构建 mysqld包括 DTrace 支持。

其他资源