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