我試圖創建一個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