InnoDB Monitors
InnoDB監視器提供有關InnoDB內部狀態的信息。 這些信息對于性能調優非常有用。其實所謂的監視器,就是 show engine innodb status 命令。
InnoDB監視器類型
有兩種類型的InnoDB監視器:
1. 標準InnoDB監視器(The standard InnoDB Monitor)顯示以下類型的信息:
- 每個活動事務持有的表和記錄鎖
- 事務的鎖等待
- 線程的信號量等待
- 待處理文件的I/O請求 (Pending file I/O requests)
- 緩沖池統計信息 (Buffer pool statistics)
- InnoDB 主線程的 purge buffer 和 insert buffer 歸并活動(merge activity)
2. InnoDB鎖定監視器(The InnoDB Lock Monitor)將額外的鎖信息作為標準InnoDB監視器輸出的一部分進行打印。
開啟?InnoDB Monitor
開啟??standard InnoDB Monitor (需要PROCESS權限)
> set GLOBAL innodb_status_output=ON;上面的語句可定期寫入到標準錯誤輸出(stderr,即error log,大概每15s寫一次),你也可以使用?SHOW ENGINE INNODB STATUS 語句直接在客戶端獲取innodb信息。
而開啟 InnoDB Lock Monitor 需要同時打開以下2個參數,它的信息也是隨 InnoDB Standard Monitor 的信息一起打印出來:
> set GLOBAL innodb_status_output=ON; > set GLOBAL innodb_status_output_locks=ON;InnoDB 標準監視器和鎖監視器的輸出信息
鎖監視器與標準監視器基本相同,只是它包含了附加的鎖信息(lock information)。
?
CREATE TABLE 句法只不過是為了通過 MySQL SQL 語法分析而提供給 InnoDB 引擎命令的一種方式:那個被創建的表根本與 InnoDB Monitor 無任何關系。如果你在監視器運行著的狀態下關閉數據庫,并且你需要再次啟動監視器, 那么你不得不在發出一個新的 CREATE TABLE 來啟動監視器之前先移除(drop)這個表。
與之相類似的,你可以啟動 innodb_lock_monitor ,它在某些方面與 innodb_monitor 一致,但是它會顯示更多的鎖定信息。一個單獨的 innodb_tablespace_monitor 將顯示在現有表空間內所建立的文件段列表以及可以分配數據結構的有效表空間。從 3.23.44 開始,提供了 innodb_table_monitor ,通過它可以獲得 InnoDB 內部數據字典的信息。
?
輸出信息的某些注意點:
如果 TRANSACTIONS 部分報告鎖定等待(lock waits),那么你的應用程序可能有鎖爭用(lock contention)。輸出信息可以幫助跟蹤事務死鎖的原因。
SEMAPHORES 部分報告線程等待信號量以及統計出線程需要旋轉(spin)或等待(wait)一個互斥(mutex)或 rw-lock 信號量的次數。一個較大的線程等待信號量的次數可能是由于磁盤 I/O 引起,或 InnoDB 內部的爭用問題(contention problems)。爭用(Contention)可能是由于比較繁重的并發性查詢,或操作系統的線程調度的問題。 在這種情形下,可將 innodb_thread_concurrency 設置地小于默認的 8 。
FILE I/O 部分列出了文件 I/O 的等待請求。過大的值就意味著磁盤 I/O 瓶頸。
BUFFER POOL AND MEMORY 部分給出了頁面讀寫的統計。通過這些值可以計算出你的查詢通常所需的數據文件 I/O 量。?
?
轉載于:https://www.cnblogs.com/wsxnihao/p/11613643.html
總結
以上是生活随笔為你收集整理的InnoDB Monitors的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派工程设计常见问题与处理
- 下一篇: 2019-10-06 线性系统的理解