对 DTrace 的支持在 MySQL 5.7 中被弃用,并在 MySQL 8.0 中被移除。
MySQL 服务器中的 DTrace 探测器旨在提供有关 MySQL 中查询执行的信息以及该过程中使用的系统的不同区域。探测器的组织和触发意味着整个查询的执行可以使用一级探测器(query-start
和
query-done
)进行监视,但是通过监视其他探测器,您可以根据使用的锁连续获得有关查询执行的更多详细信息、排序方法甚至逐行和存储引擎级别的执行信息。
DTrace 探测器经过组织,以便您可以跟踪整个查询过程,从客户端的连接点开始,通过查询执行、行级操作,然后再次退出。您可以将探测器视为在典型的客户端连接/执行/断开连接序列期间的特定序列内触发,如下图所示。
全局信息在各个级别的 DTrace 探测器的参数中提供。全局信息,即连接 ID 和用户/主机以及相关的查询字符串,在关键级别(connection-start
、
command-start
、query-start
和query-exec-start
)提供。当您深入研究探测时,假设您只对单个执行感兴趣(行级探测仅提供有关数据库和表名的信息),或者您打算将行级探测与名义上的parent 探测以提供有关特定查询的信息。在提供每个探测器的格式和参数时给出了这方面的示例。
MySQL 包括对这些平台上的 DTrace 探测的支持:
SPARC、x86 和 x86_64 平台上的 Solaris 10 Update 5 (Solaris 5/08)
OS X / macOS 10.4 及更高版本
带有 UEK 内核的 Oracle Linux 6 及更高版本(自 MySQL 5.7.5 起)
在这些平台上启用探测器应该是自动的。要在构建期间显式启用或禁用探测器,请使用
CMake-DENABLE_DTRACE=1
的或
-DENABLE_DTRACE=0
选项
。
如果非 Solaris 平台包括 DTrace 支持,则在该平台上构建 mysqld包括 DTrace 支持。
其他资源
有关 DTrace 和编写 DTrace 脚本的更多信息,请阅读 DTrace 用户指南。
有关 DTrace 的介绍,请参阅 MySQL 开发区文章 Getting started with DTracing MySQL。