Mysql

如何測量某個查詢的 IOP 數

  • December 31, 2014

我需要估計某個 MySQL DB(尚不存在)的最大 IOP。

作業系統是 Linux,數據庫是 MySQL 5.1.x(儘管我認為數據庫品牌對於所問的主題並不重要)

問題表極其簡單。具有某些屬性的使用者表。主要查詢是:

SELECT * FROM users WHERE username='';

我考慮用大量記錄填充一個表,並使用 iostat 計算每個查詢的平均 IOP。稍後我可以使用相同的方法來測試 SELECT。

這是測量 IOP 的合理測試嗎?還有其他更好的方法來實現這一點嗎?

謝謝

這比看起來更棘手。每秒 I/O 很難確定。僅僅因為文件系統每秒看到如此多的 I/O,並不意味著 MySQL 看到的是相同的東西 - 存在 I/O 緩沖之類的東西。我會研究 MySQL 5.6 - 特別是性能模式 (P_S) (Marc Alff 寫了 P_S (*))。一個 SQL SELECT 可以從多個表中讀取。一個事務可以讀取和寫入許多表。你在使用 MyISAM 嗎?如果您使用的是 InnoDB,您是否每個表使用一個文件(建議恕我直言) - 否則 iostat 只會給出數據庫範圍的數字。我建議您詳細閱讀該主題,並清楚您正在測量的確切內容。

(*) 這個評論顯然取決於你是否有升級的選擇,但是伺服器版本在這個論壇上總是很重要——那些試圖幫助你了解你的系統的人越多,你得到的幫助就越多。

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