我试图创建一个valgrind
(cachegrind)分析MySQL客户端连接。
我正在运行valgrind
与--trace-children=yes
。MySQL会话的调用图
我想找到的是内部方法调用的一个,看调用图在使用时它...
运行valgrind
--trace-children=yes ./bin/mysqld_safe
后,我得到的是写那一刻,许多转储文件。
我等了5分钟(让我期望创建的新文件具有不同的“最后修改日期”)
经过这5分钟后,我打开30个会话,并用小事务处理系统,当我完成 - 关闭MySQL。
现在的问题:
1.运行30个事务并关闭系统后,只有3个文件被修改。我期望看到30个文件,导致我通过MySQL跨度首先 - 有人可以确认MySQL跨越每个会话的线程而不是进程吗?
我看到三个不同的数据库日志调用:一个用于DUMMY,一个用于
binlog
,另一个用于innodb
日志。有人可以解释为什么binlog
和DUMMY在那里,它们之间有什么区别? (我猜DUMMY是因为innodb
,但我不明白为什么binlog
在那里,如果我的第一个猜测是真的)。有没有更好的方法来做这个分析?
是否有像kcachegrind
这样的工具可以打开多个文件并显示所有文件的摘要? (或有可能以某种方式在kcachegrind
内?)
谢谢!
顺便说一句 - 谁对扩展和开发MySQL的人 - 有很多有趣的事情可以改善....
为什么如果我没有配置复制binlog被使用?这是我可以忽略的内存日志吗? – evenro
您可以在不设置实际复制的情况下激活二进制日志。也许你做到了? ([这些binlog选项存在,也许你设置它们?](https://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html)) – GhostGambler
我故意使用默认MySQL的设置,所以我没有改变任何配置,但套接字...我没有在my.cnf中的任何配置。而且我也没有找到binlog文件,所以我想这是一个内存中或虚拟调用... – evenro