Mysql
為什麼 HDD 對 innodb_fsync_threshold 的變化比 SSD 更敏感
我在做什麼:
我想做一些實驗,以便在更改不同物理儲存介質上的配置時在 DBMS 中找到一些有趣的事實。
磁碟:
Intel P45 SSD 與 SATA HDD 7200 RPM。
工作負載:
TPC-C
性能測量:
吞吐量
改變時的標準化結果
innodb_fsync_threshold
。謝謝您的幫助!
硬體角度可以解釋這些差異嗎?
磁碟 I/O 的步驟如下:
- 緩衝(用於寫入)
- 向設備發送數據
- 在設備上“尋找”所需的圓柱體
- 等待讀/寫磁頭越過需要讀/寫的扇區
- 執行 I/O
- 緩衝(用於讀取)
步驟 3 和 4 是 HDD 的主要時間消耗者。對於 SDD,沒有“頭部”可以移動,也沒有碟片旋轉,因此這兩個步驟都不需要時間。
更重要的是,根據月相,3 和 4 花費的時間是可變的。一個好的控制器等可以玩優化磁碟活動的遊戲。
大多數基準測試都有“現實生活”的缺陷。
- 他們忽略了來自其他執行緒的干擾——這些執行緒可能正在爭奪對同一驅動器的訪問權。
- 他們在資源上尋找可以處理的“最大值”。雖然這是一個有趣的指標,但在現實生活中,如果伺服器處於最大值,它即將崩潰。蝴蝶拍打翅膀會導致它從懸崖上掉下來。
一些優化:
- RAID 可以記憶體東西——讀取和/或寫入——以平滑活動。
- RAID 可以“撒謊”行動何時結束。這是因為,例如,“電池支持的寫入記憶體”可以安全地在控制器上保存寫入記憶體,同時將“成功寫入”返回給使用者。這可能會導致圖中出現一個令人費解的轉折點——當寫入記憶體已滿時,設備會突然變慢。