每個資料庫管理員都應知道的磁碟機快取與 SQL Server 並用說明

文章翻譯 文章翻譯
文章編號: 234656 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

結論

資料庫系統最重要的功用是負責精確儲存與擷取資料,即使發生未預期的系統失敗事件也是如此。

系統必須保證交易不可部分完成性及耐用性,同時為目前的執行作業、多項交易,以及各種不同的失敗點負起責任。這經常被稱為 ACID (不可部分完成性、一致性、隔離性以及耐用性) 特性。

本文將說明磁碟機快取的含意。建議您先閱讀下列「Microsoft 知識庫」中的文件,進一步釐清快取作業,並深入探討不同的失敗模式:
86903 Description of caching disk controllers in SQL Server
46091 Using hard disk controller caching with SQL Server
230785 SQL Server 7.0, SQL Server 2000, and SQL Server 2005 logging and data storage algorithms extend data reliability
另建議您閱讀下列文件:

其他相關資訊

Microsoft SQL Server 2005、SQL Server 2000、SQL Server 7.0、舊版 SQL Server 及目前市面上許多主流資料庫產品,都是使用「預寫式記錄」(Write-Ahead Logging,WAL) 通訊協定。
預寫式記錄 (WAL) 通訊協定
通訊協定一詞是 WAL 的絕佳描述。它是一套為確保資料能夠正確進行儲存及交換所明確界定的必要實作步驟,而且可以在失敗的情況下復原為已知的狀態。就像網路會包含已定義的通訊協定,以便透過一致且受保護的方式交換資料,WAL 也同樣會描述保護資料的通訊協定。
所有版本的 SQL Server 都會使用 Win32 CreateFile 函數來開啟記錄檔和資料檔案。以 SQL Server 開啟時,dwFlagsAndAttributes 成員會包括 FILE_FLAG_WRITE_THROUGH 選項。
FILE_FLAG_WRITE_THROUGH
這個選項會指示系統寫出任何中繼快取,並直接寫入磁碟中。系統仍然可以快取寫入作業,但無法遲緩地加以排清。

FILE_FLAG_WRITE_THROUGH 選項確保在寫入作業傳回順利完成結果時,資料已正確儲存在穩定的儲存體中。此選項會與預寫式記錄 (WAL) 通訊協定規格結合,以確保資料安全。
許多磁碟機 (SATA、ATA、SCSI 及 IDE) 都內建有 512 KB、1 MB 或更大容量的快取。磁碟機快取通常要依賴電容器,而不是電池供電方案。這些快取機制無法保證寫入作業能夠跨電源循環週期或類似失敗點執行。它們只能保證完成磁區寫入作業。由於磁碟機的大小不斷擴大,快取也愈變愈大,所以在失敗時會暴露大量的資料。

增強式快取控制站系統會停用磁碟快取,並提供功能性的電池供電快取方案。這些快取可以將資料保持在快取中達數日之久,甚至可以將快取卡放入第二部電腦中。當恢復電源供應之後,未寫入的資料要完全排清,才能再繼續後續的資料存取。其中有許多產品都允許建立讀寫百分比,以取得最佳效能。有些則包含較大的記憶體儲存區域。事實上,針對特定的市場區塊,某些硬體廠商還提供快取容量高達數 GB 的高端電池供電磁碟快取系統。這些都能大幅提升資料庫效能。

受硬碟轉速速率、移動磁頭所需的機械時間及其他限制因素影響,不使用快取所執行的 I/O 傳輸需時甚久。SQL Server 安裝的目標對象是提供快取控制站的系統。這些控制站會停用磁碟快取並提供穩定的媒體快取,以滿足 SQL Server I/O 需求。它們會使用快取控制站的各種最佳化功能,避免與磁碟搜尋及寫入時間有關的效能問題。

子系統實作有數種類型。RAID 及 SAN 即為子系統實作類型的兩例。這些系統一般是以 SCSI 磁碟建置。之所以如此做,有數個原因。下節說明高等級磁碟的考量事項。

SCSI 磁碟:
  • 製造用途一般為因應大容量工作。
  • 目標對象一般為多使用者的伺服器實作。
  • 故障率平均時一般也比其他實作好。
  • 包含複雜精密的 heuristics,有助預測即將發生的故障。
其他磁碟實作,如 IDE、ATA 及 SATA:
  • 製造用途一般為因應輕量及中量工作。
  • 目標對象一般為單一使用者的應用。
  • 某些新型實作包含複雜精密的 heuristics,有助預測即將發生的故障。
非 SCSI 的桌面控制站需要較多的主要處理器 (CPU) 頻寬,而且經常受限於單一使用中命令。例如,當非 SCSI 磁碟在調整損壞的區塊時,磁碟需要主機命令暫緩執行。ATA 匯流排則提供另一種範例。ATA 匯流排支援 2 部裝置,但僅有一個命令能夠作用。當其中一部磁碟為擱置命令服務時,另一部磁碟則保持閒置。在桌面建置 RAID 系統的技術全都會出現這些徵狀,而且會受到最慢的回應程式極大影響。除非這些系統使用進階設計,否則其效能無法與 SCSI 系統的效能匹敵。

有數種情形可取得低成本方案的桌面磁碟或陣列。例如,如果設定唯讀資料庫以執行回報,當停用磁碟快取時,就不會出現許多影響效能的 OLTP 資料庫因素。

磁碟大小會繼續增加。低成本、高容量的磁碟極富吸引力。但是當您為 SQL Server 及業務回應時間需求設定磁碟時,請仔細考慮下列問題:
  • 存取路徑的設計
  • 停用磁碟快取的需求
下表說明高層級的建議。建議資訊是以常用的製造組態為基礎。

摺疊此表格展開此表格
磁碟類型系統基礎建議
IDE 及 ATA
  • 轉速為 7,200 RPM。
  • 目標對象為桌面及單一使用者應用。
  • 預設啟用磁碟快取。使用 [硬碟內容] 的 [硬體] 索引標籤存取 [內容]、[原則] 索引標籤控制磁碟快取設定。

    注意 某些磁碟不實行這項設定。這些磁碟需要有特定的製造商公用程式才能停用快取。
  • 必須停用磁碟快取,磁碟與 SQL Server 才能並用。
  • IDE 及 ATA 系統於執行調整損壞區塊等活動時,可以延遲主機命令。這可能造成數次的 I/O 活動停用。
IDE/可攜式電腦
  • 轉速為 5,200 RPM。
  • 目標對象為可攜式電腦。
  • 請參閱<IDE 及 ATA>一節的其他建議。
  • ReadyDrive 及 NAND Flash 儲存可提供穩定的 I/O 容量。
SATA
  • 轉速為 7,200 RPM。
  • 目標對象為桌面及中量型伺服器。
  • 預設啟用磁碟快取。使用 [硬碟內容] 的 [硬體] 索引標籤存取 [內容]、[原則] 索引標籤控制磁碟快取設定。

    注意 某些磁碟不實行這項設定。這些磁碟需要有特定的製造商公用程式才能停用快取。
  • 儲存容量及快取皆比 IDE 及 ATA 大。
  • 必須停用磁碟快取,磁碟與 SQL Server 才能並用。
  • 佈線及連接較小。
  • 簡易連接 Serial Attached SCSI (SAS) 磁碟與安裝。
  • 某些機型包含故障預測建構。
SCSI
  • 轉速為 10,000 及 15,000。
  • 專為伺服器及多使用者應用而設計。
  • 專為大容量工作週期及減少故障率而設計。
  • 預設啟用磁碟快取。使用 [硬碟內容] 的 [硬體] 索引標籤存取 [內容]、[原則] 索引標籤控制磁碟快取設定。

    注意 某些磁碟不實行這項設定。這些磁碟需要有特定的製造商公用程式才能停用快取。
  • 必須停用磁碟快取,磁碟與 SQL Server 才能並用。
  • 陣列及 SAN 系統一般使用較小的佈線及連接。
  • 包含故障預測建構。
Serial Attached SCSI (SAS) 包含進階佇列,可達 256 級。SAS 還包含佇列頭及失序佇列等功能。SAS 後擋板的設計,可讓您在相同系統內同時使用 SAS 及 SATA 磁碟。SAS 設計的優點明顯可見。

SQL Server 安裝會根據控制站的能力,停用磁碟快取並提供穩定的 I/O 快取。只要控制站能提供正確的穩定媒體快取功能,不按順序將資料寫入各個磁碟就不是 SQL Server 的障礙。控制站設計的複雜性會隨進階資料安全性技術 (如鏡像) 而增加。

為了周密保護資料,您必須確保所有資料快取都經過適當處理。在許多情況下,這表示您必須停用磁碟機的寫入快取。

注意 請確保所有替代快取處理機制都能夠適當處理多種類型的失敗。

Microsoft 已經使用 SQLIOStress 公用程式測試過數種 SCSI 和 IDE 磁碟。此公用程式會在模擬的資料裝置和記錄裝置中,模擬高負載的非同步讀/寫活動。測試效能統計資料會顯示已停用寫入快取的磁碟每秒平均寫入作業介於 50 與 70 之間,而 RPM 範圍則介於 5,200 與 7,200 之間。

如需其他資訊及有關 SQLIOStress 的詳細資訊,請參閱下列「Microsoft 知識庫」中的文件:
231619 INF:如何使用 SQLIOStress 公用程式針對 SQL Server 這類磁碟子系統進行壓力測試
許多個人電腦製造商 (例如,Compaq、Dell、Gateway 或 HP) 都是訂購已停用寫入快取的磁碟機。但是測試顯示情況並非必定如此,因此您務必進行完整測試。

注意 如果對磁碟機的快取狀態有任何疑問,請洽詢製造商並取得正確的公用程式或跳線設定,以停用寫入快取作業。

?考

如需 SQL Server I/O 需求的完整詳細資訊,請造訪下列 Microsoft 網站:http://www.microsoft.com/sql/AlwaysOn

屬性

文章編號: 234656 - 上次校閱: 2007年9月4日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000, Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
關鍵字:?
kbinfo KB234656
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com