2014-04-03 28 views
0

我試圖創建一個valgrind(cachegrind)分析MySQL客戶端連接。
我正在運行valgrind--trace-children=yesMySQL會話的調用圖

我想找到的是內部方法調用的一個,看調用圖在使用時它...

運行valgrind--trace-children=yes ./bin/mysqld_safe
後,我得到的是寫那一刻,許多轉儲文件。
我等了5分鐘(讓我期望創建的新文件具有不同的「最後修改日期」)

經過這5分鐘後,我打開30個會話,並用小事務處理系統,當我完成 - 關閉MySQL。

現在的問題:
1.運行30個事務並關閉系統後,只有3個文件被修改。我期望看到30個文件,導致我通過My​​SQL跨度首先 - 有人可以確認MySQL跨越每個會話的線程而不是進程嗎?

  1. 我看到三個不同的數據庫日誌調用:一個用於DUMMY,一個用於binlog,另一個用於innodb日誌。有人可以解釋爲什麼binlog和DUMMY在那裏,它們之間有什麼區別? (我猜DUMMY是因爲innodb,但我不明白爲什麼binlog在那裏,如果我的第一個猜測是真的)。

  2. 有沒有更好的方法來做這個分析?
    是否有像kcachegrind這樣的工具可以打開多個文件並顯示所有文件的摘要? (或有可能以某種方式在kcachegrind內?)

謝謝!

順便說一句 - 誰對擴展和開發MySQL的人 - 有很多有趣的事情可以改善....

回答

1

我只能幫你在一些問題上:是的,MySQL不創建進程,但線程,請參見the manual on the command which lists what is currently done by the server

當你試圖確定你的MySQL服務器是幹什麼的, 它可以幫助檢查進程列表,這是一套 線程目前服務器內執行。

(由我突出。)

關於日誌:二進制日誌是用於複製的日誌。這包含所有已執行的語句(或已更改的行)並將傳播到從屬。

InnoDB日誌獨立於二進制日誌,用於確保InnoDB符合ACID標準。首先插入事務,如果服務器崩潰並且InnoDB開始恢復,則使用此文件。

這是正常的,兩個日誌都填寫在普通服務器上。

雖然我不能幫你解決其他問題。也許你想問你的問題dba.stackexchange.com

+0

爲什麼如果我沒有配置複製binlog被使用?這是我可以忽略的內存日誌嗎? – evenro

+0

您可以在不設置實際複製的情況下激活二進制日誌。也許你做到了? ([這些binlog選項存在,也許你設置它們?](https://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html)) – GhostGambler

+0

我故意使用默認MySQL的設置,所以我沒有改變任何配置,但套接字...我沒有在my.cnf中的任何配置。而且我也沒有找到binlog文件,所以我想這是一個內存中或虛擬調用... – evenro