Sql-Server
我應該如何在 3 個物理磁碟伺服器上組織我的 mdf、日誌和 tempdb
Windows Server 2012、48Gb 記憶體、SQL 2016 標準版,帶有:
- 1 個用於 Windows 和 SQL 二進製文件的磁碟 SAS (C: )
- 2 個用於數據的 SSD 磁碟(D: 和 E: )
談到性能,放置我的 OLTP 數據庫(大約 50Gb,大約 100 個同時使用者)的 tempdb、mdf 和日誌的更好方法是什麼?
可能是:
C: - OS 和 sql 二進制
D: - MyDB 和 Tempdb 數據文件
E: - MyDB 和 TempDB 日誌文件
(D:和E:是物理磁碟,我認為創建更多邏輯分區來劃分對像對性能沒有用處,或者不是?)
這是“更好”的方式嗎?
這實際上取決於您的工作量,但只有兩個驅動器,您將不得不做出一些讓步。理想情況下,您希望將 tempdb、數據和日誌文件都放在自己的驅動器上。tempDB 中發生了很多令人討厭的事情,您不希望這影響您的生產數據庫。
正如我所說,你應該考慮你的工作量,如果 tempDB 工作特別辛苦,或者你有一個幾乎沒有寫操作的數據庫,那麼你可能會發現最好將 tempDB 放在它自己的驅動器上並捆綁數據和日誌文件在一起。在任何其他情況下,我會將 tempDB 與數據文件放在同一個磁碟上。
您顯然沒有使用最佳磁碟佈局,但我的建議(及其背後的原因)如下:
- C: - 使用****預設塊大小的 OS 和 sql 二進製文件
- 應用程序和二進製文件在預設塊大小下工作得更好,除非緊急情況,否則不應將此驅動器用於數據文件
- D: - MyDB數據和 Tempdb日誌文件以64KB 塊大小分區
- 數據庫文件(無論它們是數據文件還是日誌文件)通常使用 64KB 塊大小會更好。當發生大量讀取時,經常會發生溢出到 TempDB。此配置將允許從 D:\ 進行大量讀取,同時允許同時發生對 E:\ 的溢出(寫入),與其他路由相比,減少了 I/O 爭用。請務必將您的 TempDB 日誌文件設置為靜態大小並且不允許自動增長。填充 TempDB 日誌文件會導致事務失敗,填充數據庫的數據文件也會導致事務失敗(仍可能發生讀取)。此驅動器已滿,事務失敗,但您沒有全面的服務中斷。
- E: -以64KB 塊大小分區的MyDB日誌和 TempDB數據文件
- 與我在上面概述的 D:\ 的原因類似,將 db 日誌文件和 tempdb 數據文件放在同一驅動器上將允許並發讀取/溢出,並且作為另一個好處,這可能會允許更大的 tempdb 數據文件,因為數據庫日誌文件應該增長緩慢或在大小上保持相對靜態(與數據文件的預期增長相比)。與 tempdb 日誌文件一樣,使您的 tempdb 數據文件大小一致且適當,並禁用自動增長。密切注意此驅動器的可用空間。如果 tempdb 數據文件填滿,則事務失敗,但如果數據庫日誌文件填滿,則相應數據庫的數據庫中斷。
如果您的伺服器有額外的托架,請乞求/借用/竊取驅動器並將它們放在那裡。如果您可以將 TempDB 完全隔離到(理想情況下)一個或多個 SSD 驅動器,這是最好的。此外,您似乎沒有執行任何方式的 RAID 配置,因此我還要確保您讓權力知道與驅動器故障相關的風險(在您的情況下這將是災難性的)。盡快為驅動器冗餘預算並重新配置伺服器,或者稍後更新您的簡歷以實現工作冗餘。