簡體   English   中英

MySQL會話的調用圖

[英]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跨越線程而不是每個會話的進程嗎?

  1. 我看到了三種不同的數據庫日志調用:一種是DUMMY,一種是binlog ,一種是innodb日志。 誰能解釋為什么binlog和DUMMY在那里,它們之間有什么區別? (我猜DUMMY是因為innodb ,但是如果我的第一個猜測是正確的,我不明白為什么binlog在那里)。

  2. 有沒有更好的方法進行此分析?
    是否有類似kcachegrind的工具可以打開多個文件並顯示所有文件的kcachegrind (或者是否有可能在kcachegrind ?)

謝謝!!

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

我只能在某些問題上為您提供幫助:是的,MySQL不會創建進程,但會創建線程,請參閱命令上的手冊,其中列出了服務器當前正在執行的操作

當您嘗試確定MySQL服務器正在做什么時,檢查進程列表(這是服務器中當前正在執行的線程集)可能會有所幫助。

(由我突出顯示。)

關於日志:二進制日志是用於復制的日志。 它包含所有已執行的語句(或更改的行),並將傳播到從站。

InnoDB日志獨立於二進制日志,用於確保InnoDB執行ACID一致性。 事務首先插入那里,如果服務器崩潰並且InnoDB開始恢復,則使用該文件。

將兩個日志都填充到普通服務器上是很正常的。

不過,我無法幫您解決其他問題。 也許您想在dba.stackexchange.com提問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM