摘要
資料庫系統,首先是負責精確儲存與擷取資料,即使發生未預期的系統失敗。
系統必須保證不可部份完成性及耐久性的交易,同時為目前的執行、 多個交易,以及不同的失敗點。這通常稱為 ACID (不可部分完成性、 一致性、 隔離性及持久性) 的屬性。
這篇文章說明的含意,磁碟機的快取。建議您閱讀下列 「 Microsoft 知識庫 」 中的文件,以進一步釐清快取和其他失敗模式討論區:
86903 [SQL Server 和快取磁碟控制卡
230785 ,SQL Server 7.0 和 SQL Server 2000年的記錄和資料儲存體演算法擴充資料可靠性
也建議使用下列的文件:
-
SQL Server 2000 I/O 基本概念:
http://technet.microsoft.com/en-us/library/cc966500.aspx -
SQL Server I/O 基本概念第 2 章:
http://www.microsoft.com/technet/prodtechnol/sql/2005/iobasics.mspx
注意這些兩份文件會套用至所有目前支援的版本的 SQL Server。
更多的資訊
Microsoft SQL Server 以及許多的主流的資料庫產品,市面上現在使用預先寫入記錄 (WAL) 通訊協定。
預先寫入的記錄 (WAL) 通訊協定
在 [通訊協定一詞是描述 WAL 的絕佳方式。它是特定的而且儲存及交換正確實作所需的步驟來確保資料組已定義,而且可以修復失敗的已知狀態。就像網路會包含定義的通訊協定,因此以一致且受保護的方式交換資料,wal 也同樣太描述要保護資料的通訊協定。所有版本的 SQL Server 都開啟記錄檔和資料檔使用 Win32 createfile 而函式。DwFlagsAndAttributes成員會包括 [ FILE_FLAG_WRITE_THROUGH ] 選項開啟 SQL Server 時。
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 磁碟機:
-
製造用途一般為因應大容量工作。
-
目標對象一般在多使用者、 伺服器端的實作。
-
通常具有比其他實作好平均失敗率。
-
包含複雜的啟發學習法,以協助預測即將發生的失敗。
例如 IDE、 ATA 和 SATA 其他磁碟機實作:
-
被製造用途一般為輕量及中的職責。
-
目標對象一般在單一使用者為基礎的應用程式。
-
某些較新的實作包含複雜的啟發學習法,以協助預測即將發生的失敗。
非 SCSI 的桌面為基礎的控制站需要較多的主要處理器 (CPU) 頻寬,並經常受限於單一使用中的命令。例如,當非 SCSI 磁碟在調整損壞的區塊,磁碟機將需要主機命令暫緩。ATA 匯流排則提供另一個範例。ATA 匯流排支援 2 部裝置,但僅有一個命令可處於作用中。這會使一個磁碟機閒置而其他的磁碟機為擱置命令服務。在桌面的技術建置 raid 系統全都會出現這些徵狀,而且會大幅會受到最慢的回應。除非這些系統使用進階的設計,其效能將不會一樣地有效率,為 scsi 系統的效能。
在其中的情況有桌面磁碟或陣列是適當的低成本解決方案。例如,如果您設定成唯讀的資料庫,以執行回報,您應該不會出現許多影響效能的 OLTP 資料庫磁碟快取停用時。
硬碟機的大小會繼續增加。低成本、 高容量的磁碟可以是很有趣的事。但是,當您設定 SQL Server 和貴公司的回應時間需求的磁碟機,您應仔細考慮下列問題:
-
存取路徑的設計
-
若要停用磁碟快取需求
下表提供高層級的建議。註解資訊是以常用的製造組態為基礎。
磁碟類型系統基礎 |
註解 |
IDE 及 ATA |
|
IDE/可攜式電腦 |
|
SATA |
|
SCSI |
|
序列連接 SCSI (SAS) 包含進階的佇列,最多 256 層級。SAS 還包含標頭的佇列及失序佇列等功能。SA 後擋板的設計,啟用 SA 與 SATA 兩者的使用磁碟機相同的系統中的方式。SA 設計的優點都可明顯察覺。
您的 SQL Server 安裝停用磁碟快取,並提供穩定的 I/O 快取的控制站的能力而定。順序將資料寫入各個磁碟不是 SQL Server 的障礙,只要控制站能提供正確的穩定媒體快取功能。控制站設計的複雜性會隨進階的資料安全性技術 (如鏡像)。
若要完整保護您的資料,您應該確定正確地處理所有的資料快取。在許多情況下,這表示您必須停用寫入快取磁碟機。
附註請確定任何備用的快取機制能夠適當處理多種類型的失敗。
Microsoft 已經執行數個的 SCSI 和 IDE 磁碟機使用 SQLIOSim 公用程式測試。這個公用程式會模擬重型的非同步讀取/寫入活動,以模擬的資料裝置和記錄裝置。測試效能統計資料會顯示每個 50 和 70 之間的第二個,以停用的寫入快取磁碟機和 5,200 和 7,200 之間的 RPM 範圍平均的寫入作業。
如需詳細資訊和 SQLIOSim 的詳細資料,請參閱下列文件的 「 Microsoft 知識庫 」 中的文:
231619如何使用 SQLIOSim 公用程式,以模擬在磁碟子系統上的 SQL Server 活動許多 PC 製造商 (例如,Compaq、 Dell、 閘道或 HP) 順序與停用寫入快取的磁碟機。不過,測試的顯示,這不一定大小寫,您應該一律進行完整測試。
注意如果您有任何的疑問的快取狀態的磁碟機,請與製造商連絡,並取得適當的公用程式 」 或 「 跳接器設定,來停用寫入快取作業。
SQL Server 需要支援 「 保證的傳遞到穩定的媒體 」,如所述,在 [ SQL Server I/O 可靠性程式需求所述的系統。如需有關 SQL Server 資料庫引擎的輸入與輸出需求的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文:
967576 Microsoft SQL Server 資料庫引擎輸入/輸出需求