2010-10-12 39 views
0

在MySQL中,我有時會輸入「show innodb status」來查看長時間運行的查詢正在做些什麼。底部在「行操作」下面有一行:MySQL InnoDB:「讀/秒」的單位是什麼?

2000.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 2000.00 reads/s 

這些是什麼單位?記錄? InnoDB頁面? OS磁盤頁面? (它們是否是同一件事?)

回答

1

這是邏輯行讀取*平均在SHOW INNODB STATUS的頂部表示它正在運行報告。

所以它不同於頁面部分(其中包含物理頁面操作)。

這是一個很好的建模性能指標,因爲它可以顯示您的應用程序對數據庫的一般要求。如果需求不增加,但是性能變差,請查看數據集是否增加等。也許這會導致更多物理IO?

[*]邏輯行讀取可能仍然需要讀取許多頁面,例如,如果必須從撤消中找到較早版本(MVCC)。

+0

謝謝!我想我感興趣的一點是知道我是否可以用它來確定運行的時間。假設我知道我的程序要插入2,000,000條新記錄,而'show innodb status'說'2000.00 inserts/s'(平均) - 這是否表明它需要大約2,000,000/2000 = 1000秒(17分鐘)總數?如果它是「邏輯行讀」,這表明它是,這是很好的。 – Ken 2010-10-23 01:51:16

+1

我想你可以用它來模擬進度。由於構建唯一索引不能使用插入緩衝區,因此可能存在某些索引頁需要執行物理IO的偏差。表格插入到它們變得越大,表格也會變得越慢 - 僅僅因爲某些東西已經完成了50%,並不意味着它會持續到目前爲止的完成時間。 – 2010-10-24 16:03:09

相關問題