Mysql

為什麼 HDD 對 innodb_fsync_threshold 的變化比 SSD 更敏感

  • January 6, 2021

我在做什麼

我想做一些實驗,以便在更改不同物理儲存介質上的配置時在 DBMS 中找到一些有趣的事實。

磁碟

Intel P45 SSD 與 SATA HDD 7200 RPM。

工作負載

TPC-C

性能測量

吞吐量

改變時的標準化結果 innodb_fsync_threshold

每個數據點重複 10 次。 結果

謝謝您的幫助!

硬體角度可以解釋這些差異嗎?

磁碟 I/O 的步驟如下:

  1. 緩衝(用於寫入)
  2. 向設備發送數據
  3. 在設備上“尋找”所需的圓柱體
  4. 等待讀/寫磁頭越過需要讀/寫的扇區
  5. 執行 I/O
  6. 緩衝(用於讀取)

步驟 3 和 4 是 HDD 的主要時間消耗者。對於 SDD,沒有“頭部”可以移動,也沒有碟片旋轉,因此這兩個步驟都不需要時間。

更重要的是,根據月相,3 和 4 花費的時間是可變的。一個好的控制器等可以玩優化磁碟活動的遊戲。

大多數基準測試都有“現實生活”的缺陷。

  • 他們忽略了來自其他執行緒的干擾——這些執行緒可能正在爭奪對同一驅動器的訪問權。
  • 他們在資源上尋找可以處理的“最大值”。雖然這是一個有趣的指標,但在現實生活中,如果伺服器處於最大值,它即將崩潰。蝴蝶拍打翅膀會導致它從懸崖上掉下來。

一些優化:

  • RAID 可以記憶體東西——讀取和/或寫入——以平滑活動。
  • RAID 可以“撒謊”行動何時結束。這是因為,例如,“電池支持的寫入記憶體”可以安全地在控制器上保存寫入記憶體,同時將“成功寫入”返回給使用者。這可能會導致圖中出現一個令人費解的轉折點——當寫入記憶體已滿時,設備會突然變慢。

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