MS SQL 佈局可實現最佳效能

MS SQL 佈局可實現最佳效能

我們購買了一台新伺服器作為 MS SQL 後端。我很想知道最好的設定是什麼。

伺服器是 Dell R710,有 6 個硬碟,2x 74GB 15k 和 4x 146GB 15k

目前這是在 RAID 1/Raid10 配置中設定的。

我的問題是以下內容應該去哪裡(哪個陣列)?

TEMPDB(還有數量、大小和增長) 系統 DB(主資料庫、模型資料庫等) 應用程式 MDF 應用程式 LDF 系統頁面文件

RAID1 上已安裝作業系統。

答案1

我將作業系統、分頁檔案和 LDF 放在 RAID1 陣列上。 RAID10 陣列上的其他所有內容。

如果您不使用 Windows 2008,請確保您的分割區正確對齊:

http://msdn.microsoft.com/en-us/library/dd758814.aspx

如前所述,為每個 cpu 核心添加 1 個 TEMPDB 檔案 - 使它們的大小相同。

適當調整日誌檔案的大小並一步建立它們。

如果可能的話,請考慮透過網路共用將資料庫備份到不同的伺服器 - 以降低陣列完全失敗的風險,並隨身攜帶資料庫和備份。

答案2

臨時資料庫

我不久前做了一些關於 tempdb 優化的研究並回答了我自己的問題關於 Stackoverflow 的問題。這是我發現的。

為了優化 tempdb 效能,請注意實體磁碟配置、檔案配置以及資料庫內的一些設定。

實體磁碟配置

tempdb 應該駐留在其上自己的專用實體磁碟。這允許它從 SQL Server 上的其餘磁碟區中分離 I/O 交易。

若要將 tempdb 移至新的磁碟機,請使用ALTER DATABASE.它是執行此操作的關鍵 T-SQL 命令。 Microsoft 在 SQL Server 2005 線上叢書中提供了一個很好的範例。文章名稱為 ALTER DATABASE (Transact-SQL),具體章節為'G。將 tempdb 移動到新位置。

tempdb 是一個非常高寫入量的資料庫。因此,RAID 5 陣列不適合放置它。你應該把tempdb在 RAID 1 或 RAID 10 陣列上因為它們針對高寫入應用程式進行了最佳化。如果您能為 tempdb 的每個實體資料庫檔案提供額外的 RAID 1 或 RAID 10 陣列,您將獲得更高的效能。

資料庫檔案

你應該有伺服器中每個 CPU 核心一個實體文件。因此,如果您有雙晶片、雙核心伺服器,則應該有四個用於 tempdb 資料庫的實體資料庫檔案。新增更多資料庫檔案時,在以下位置設定檔很重要相同的初始大小和相同的增長設置。這樣,SQL Server 將盡可能均勻地在檔案中寫入資料。

資料庫檔案大小

tempdb 資料庫的大小會影響系統的效能。例如,如果為 tempdb 定義的大小太小,部分系統處理負載可能會減少每次重新啟動 SQL Server 執行個體時,tempdb 都會自動成長到支援工作負載所需的大小。您可以透過增加 tempdb 資料和日誌檔案的大小來避免這種開銷。

在生產環境中確定 tempdb 的適當大小取決於許多因素,包括現有工作負載和所使用的 SQL Server 功能。 Microsoft 建議您透過在 SQL Server 中執行下列任務來分析現有工作負載測試環境:

  1. 為 tempdb 設定自動增長(在測試環境中!)
  2. 執行單一查詢或工作負載追蹤檔案並監視 tempdb 空間使用情況。
  3. 執行索引維護操作,例如重建索引和監視tempdb空間。
  4. 使用前面步驟中的空間使用值來預測您的總工作負載使用;根據預期的並發活動調整此值,然後相應地設定 tempdb 的大小。

tempdb 的最小大小建議如下:

  環境。大小 DB 大小 (MB) 日誌大小 (MB)
  ----------- ------------ -----------
  小 1024 256
  中號 5120 1024
  大號10024 2048

資料庫設定

您可以透過以下方式進一步提高 tempdb 性能停用自動更新統計數據,這將為您的 tempdb 節省一些工作。您也可以設定自動建立統計選項為 false

免責聲明:更改設定時應小心。根據您對 tempdb 施加的負載類型,變更設定可能會對系統效能產生不利影響。

若要達到最佳 tempdb 效能,請遵循中提供的指南和建議優化 tempdb 效能

如何監控tempdb的使用情況?

跑步tempdb 中的磁碟空間不足造成重大干擾在 SQL Server 生產環境中,可能會阻止正在執行的應用程式完成操作。

您可以使用sys.dm_db_file_space_usage動態管理視圖來監視 tempdb 檔案中這些功能所使用的磁碟空間。此外,若要在會話或任務層級監視 tempdb 中的頁面指派或釋放活動,您可以使用動態管理檢視sys.dm_db_session_space_usagesys.dm_db_task_space_usage

這些視圖可用於識別使用大量 tempdb 磁碟空間的大型查詢、臨時表或表變數。還有幾個計數器可用於監視 tempdb 中的可用空間以及正在使用 tempdb 的資源。

連結:

答案3

簡單的通用答案是任何涉及高 IO 的內容都應該放入 RAID 10 磁碟組。您還決定了分區策略或問題的一部分嗎?

因此,在您的第一個磁碟組中,我可能會建立一個分割區(大約 70GB 可用),我會將作業系統和 MSSQL 應用程式放置在該分割區上。

第二個我將建立以下分區

1) 頁面檔案分割區(取決於您擁有的記憶體大小,但大約 10-20GB 2) 交易日誌檔案分割區 100GB 3) 資料檔案分割區 100GB

這將為您留下大約 50GB 的空閒空間,我將保留未分配的空間,以便您可以根據需求的變化增加日誌分割區或資料分割區。

有趣的是,我目前正在同一規格的機器上工作,只是我使用 Linux 和 Oracle,你是來自平行宇宙的我嗎?

詹姆士

答案4

抱歉,我以未註冊用戶的身份提出了這個問題,現在無法將其標記為已回答。我正在等待管理員回來,看看他們是否可以再次將我的帳戶附加到該問題。

為了更深入地了解該伺服器不會承受巨大的負載,它實際上是一個原始碼控制後端。購買伺服器和 DAS 或 ISCSI SAN 之類的東西就有點過分了,而且成本也會破壞專案的機會。我為一家約有 100 人的中小型企業工作,因此我們的 IT 預算非常緊張,尤其是現在。

@mrdenny

我們確實向推薦此配置的軟體供應商提出了這個問題。然後我們買了它,當我們提出我在這裡問的任務時,他們說將日誌、資料庫和臨時資料庫全部放在 raid 10 分割區上。我不是一個大資料庫專家(真的??),但這聽起來很可疑,因為幾乎每個人都知道不要將 ldfs 和 mdfs 混合在同一個主軸上。

@splattne - 感謝您對 tempdb 的深入了解,這對於本次和未來的 SQL 安裝會派上用場。

@SuperCoolMoss - 我已經和我自己的 IT 朋友網路中的一些人交談過,他們同意你的觀點。 RAID1 上的作業系統、頁面檔案和 LDF 以及 RAID10 上的 tempdb 和 MDF

感謝其他發表評論的人。

根據我的閱讀,這些是我認為在磁碟部署 SQL 時應該遵循的基本規則。我認為應該按這個順序遵循,如果您同意或不同意,請告訴我。

  1. 使用冗餘磁碟(非常明顯)
  2. 使用快速磁碟(SCSI/SAS,如果可能,15k)
  3. 將 ldf 和 mdf 檔案分離到不同的軸上
  4. 不要對 ldfs 或 tempdbs 使用 RAID5(使用 RAID10 或 RAID1)
  5. 將您的 tempdb 放在最快的主軸上;如果可能,將 tempdb 與 ldf 和 mdf 主軸分開。

請隨時分享您對此清單的修改版本。

相關內容