Mysql

高 MySQL“InnoDB 每秒寫入數” - 看不到查詢?

  • September 22, 2014

在我們的實時MySQL 5.5數據庫伺服器上,我們使用MySQL Workbench來執行手動查詢、檢查正在執行的查詢以查看正在發生的事情等。

我今天注意到,在“伺服器狀態”選項卡上有非常多的“每秒查詢數”和“**每秒 InnoDB 寫入數”,但在顯示“**客戶端連接”列表的選項卡上,顯示了所有正在執行的查詢,它幾乎沒有顯示任何查詢.. 可能每隔幾秒鐘就有 2 或 3 個。

我在這裡有什麼誤解?這兩個選項卡根本沒有加起來。

高 MySQL 使用率

**編輯 -**這是輸出SHOW ENGINE INNODB STATUS;

--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
2 read views open inside InnoDB
Main thread process no. 24494, id 139631733794560, state: sleeping
Number of rows inserted 36474186, updated 163927609, deleted 11892445, read      1747097889216
1.06 inserts/s, 13.91 updates/s, 0.00 deletes/s, 33615.95 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================

您需要的是更好的 InnoDB 儲存引擎的視覺化表示

InnoDB 架構

考慮觸發可以監控的寫入的類型

寫操作數

使用 InnoDB 寫入的字節數

這些是在 InnoDB 內部和外部攪動的事情之一。然而,這還不是全部。檢查有關狀態變數的 MySQL 文件

我的猜測是 MySQL Workbench 只是在監視Innodb_data_writes

如果數據寫入高,鑑於此

1.06 inserts/s, 13.91 updates/s, 0.00 deletes/s

這大約是每秒 15 個查詢,您可能需要花一些時間調整 InnoDB。由於InnoDB 進行模糊檢查點,如果您看到永不減弱的持續寫入,InnoDB 將揭示寫入的瓶頸。這可能是由於 OS 或 VM 造成的。這也可能是由於 InnoDB 緩衝池過小(我看到它是 100% 滿的)。大量讀取會將數據和索引頁面帶入緩衝池。來自 INSERT 和 UPDATE 的新的或更新的數據和索引頁也需要擠入緩衝池。也許更大的緩衝池是為了。

換個角度看訪問的行數

    36474186 Rows from INSERTs
   163927609 Rows from UPDATEs
    11892445 Rows from DELETEs
   212294240 Rows Written
1747097889216 from SELECTs

當您將 1747097889216 除以 212294240 時,這意味著對於您更新的每一行,將讀取 8229.6 行。這與每個 INSERT、UPDATE 或 DELETE 的 2245.46 (33165.95/14.97) SELECT 一起使用。我可以看到寫入擠入緩衝池。這讓我覺得Buffer Pool、Log Buffer、Redo Logs都應該增加。

引用自:https://dba.stackexchange.com/questions/77254