5.8 使用 DTrace 跟踪 mysqld

在 MySQL 5.7 中已弃用了对 DTrace 的支持,在 MySQL 8.0 中已将其删除。

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

DTrace 探针经过组织,因此您可以跟踪整个查询过程,从 Client 端连接到查询执行,行级操作,然后再退出。您可以认为探针是在典型的 Client 端连接/执行/断开连接 Sequences 中按特定 Sequences 触发的,如下图所示。

图 5.1 DTrace 探针序列

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

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

MySQL 在以下平台上支持 DTrace 探针:

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

  • OS X 10.4 及更高版本

  • 具有 UEK 内核的 Oracle Linux 6 和更高版本(自 MySQL 5.7.5 起)

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

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

Additional Resources