由于this问题,我将使用dtrace来查看从属SQL线程对临时表的操作是否遵循this指南。
这是我的剧本:
#!/usr/sbin/dtrace -s
#pragma D option quiet
dtrace:::BEGIN
{
printf("Tracing... Hit Ctrl-C to end.\n");
}
pid$target::*mysql_parse*:entry
{
self->query = copyinstr(arg1);
}
pid$target::*Slave_open_temp_tables*:return
{
@query[self->query] = count();
}
这就是我在跑步时得到的:
# ./Slave_open_temp_tables.d -p `pgrep -x mysqld`
proc-stub:rd_event_enable
proc-stub:rd_errstr err=26
dtrace: failed to compile script ./Slave_open_temp_tables.d: line 14: probe description pid29441::*Slave_open_temp_tables*:return does not match any probes
User defined signal 1
我也试过create_myisam_tmp_table
,但结果相同。
我哪里做错了?
答案 0 :(得分:0)
我没有安装MySQL来寻找你,但-l
的{{1}}选项会告诉你哪些探测器可用,你应该从中找出你是什么做错了。
dtrace
或者尝试使用不太具体的名称,例如$ dtrace -ln 'pid$target::*Slave_open_temp_tables*:return' -p `pgrep -x mysqld`
或*open_temp_tables*
甚至*tables*
来获取更广泛的结果......可能是该功能不再存在由于MySQL源代码的变化,在目标进程中。
另外,我假设您已检查*
的输出以确保它是有效的输入pid?