Optimization
數據庫是否優化隨機寫入和讀取操作?
對於 HDD 和某些 SSD,隨機寫入/讀取比順序慢。某些數據庫操作 (
UPDATE .. WHERE ..
) 可能會導致許多隨機寫入/讀取。所以我想知道現代數據庫是否實現了優化它們的機制(例如MySQL 中的 innodb_flush_neighbors)。數據庫可以是關係、鍵值、No-SQL 或任何其他類型的數據庫。
是的。幾乎每個關係數據庫都針對隨機 IO 進行了優化(閱讀:OLTP 工作)。這在緩衝池、頁面換出策略、檢查點、預寫日誌和恢復協議(主要是 Aries)中實現。
硬體配置也會影響這一點。例如,較小的塊大小是典型的。磁碟緩衝有幫助。
架構設計很重要。例如,在寫入密集型工作中使用壓縮列儲存是一個糟糕的選擇,而對於一次寫入分析類型的工作來說,它是一個很好的選擇。