[英]call graph for MySQL sessions
我正在嘗試創建MySQL客戶端連接的valgrind
(cachegrind)分析。
我正在使用--trace-children=yes
運行valgrind
。
我想找到的是內部方法調用之一,以便在使用時查看調用圖...
運行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
? (或者是否有可能在kcachegrind
?)
謝謝!!
順便說一句-對於擴展和開發MySQL的人-有很多有趣的事情可以改進。
我只能在某些問題上為您提供幫助:是的,MySQL不會創建進程,但會創建線程,請參閱命令上的手冊,其中列出了服務器當前正在執行的操作 :
當您嘗試確定MySQL服務器正在做什么時,檢查進程列表(這是服務器中當前正在執行的線程集)可能會有所幫助。
(由我突出顯示。)
關於日志:二進制日志是用於復制的日志。 它包含所有已執行的語句(或更改的行),並將傳播到從站。
InnoDB日志獨立於二進制日志,用於確保InnoDB執行ACID一致性。 事務首先插入那里,如果服務器崩潰並且InnoDB開始恢復,則使用該文件。
將兩個日志都填充到普通服務器上是很正常的。
不過,我無法幫您解決其他問題。 也許您想在dba.stackexchange.com上提問
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.