您目前已離線,請等候您的網際網路重新連線

關於每個資料庫系統管理員應該知道的 SQL Server 中使用的磁碟機的快取的資訊

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:234656
結論
資料庫系統,首先是負責精確儲存與擷取的資料,即使發生未預期的系統失敗。

系統必須保證不可部份完成性及耐久性的交易,同時為目前的執行、 多個交易,以及各種不同的失敗點。這通常稱為 ACID (不可部分完成性、 一致性、 隔離性及耐久性) 屬性。

這篇文章說明的含意,磁碟機的快取。建議您閱讀下列 「 Microsoft 知識庫 」 中的文件,以進一步釐清快取和其他失敗模式討論區:
86903 SQL Server 和快取磁碟控制卡
230785 SQL Server 7.0 和 SQL Server 2000年的記錄和資料存放區演算法擴充的資料可靠性
也建議使用下列的文件: 注意這些兩份文件套用到所有目前支援的 SQL Server 版本。
其他相關資訊
Microsoft SQL Serverand 許多的主流資料庫產品,市面上現在使用預先寫入記錄 (WAL) 通訊協定。
預先寫入記錄 (WAL) 通訊協定
在 [通訊協定一詞是描述 WAL 的絕佳方式。它是特定的儲存及交換正確實作所需的步驟來確保資料組已定義和可復原至失敗的已知狀態。就像網路會包含定義的通訊協定,因此以一致且受保護的方式交換資料,wal 也同樣太描述要保護資料的通訊協定。
所有的 SQL Server 版本開啟記錄檔和資料檔使用 Win32 createfile 而函式。DwFlagsAndAttributes成員包含開啟 SQL Server 時的 [ FILE_FLAG_WRITE_THROUGH ] 選項。
FILE_FLAG_WRITE_THROUGH
此選項會指示系統寫出任何中繼快取,並直接寫入磁碟。系統仍然可以快取寫入作業,但無法延遲清除。

[FILE_FLAG_WRITE_THROUGH] 選項可確保當寫入作業傳回成功完成的資料正確儲存穩定的儲存體中。這與寫入記錄 (WAL) 通訊協定規格,以確保資料對齊。
許多磁碟機 (SATA、 ATA,SCSI 和 IDE 基礎) 包含內建的快取和較大的 512 KB,1 MB。磁碟機快取通常要依賴電容器,而不是電池供電方案。這些快取機制無法保證寫入跨電源循環週期或類似失敗點。它們只能保證完成磁扇區寫入作業。磁碟機繼續成長的大小,快取變得越來越大,而且它們可以公開 (expose) 大量的資料時失敗。

增強的快取控制站系統停用磁碟上快取,並提供功能性的電池供電快取方案。這些快取可以維護快取中的資料有好幾天,並甚至允許快取的卡片,放在第二部電腦。當恢復電源供應時,不成文的資料完全排清,才允許任何進一步的資料存取。其中大部分與建立以達最佳效能的寫入快取允許讀取的百分比。某些包含大量記憶體存放區。事實上,針對特定的市場區塊,某些硬體廠商提供高階電池供電磁碟快取多個 gb 的快取系統。這些可大幅改善資料庫效能。

不使用快取執行的 I/O 傳輸可能會顯著加長因為硬碟轉速速率、 移動磁頭及其他限制因素所需的機械時間。SQL Server 安裝的適用對象是提供快取控制站的系統。這些控制站停用磁碟上快取,並提供穩定媒體快取滿足 SQL Server I/O 需求。他們避免發生與磁碟搜尋和寫入時間使用快取控制站的各種最佳化功能相關的效能問題。

有許多類型的子系統實作。RAID 和 SAN 是兩個範例的子系統實作這些型別。這些系統通常是以 scsi 磁碟建置。有幾個原因。下節代說明高等級磁碟的考量。

SCSI 磁碟機:
  • 製造用途一般為因應大容量工作。
  • 目標對象一般在多使用者,伺服器 basedimplementations。
  • 通常會有故障率比 otherimplementations 更好平均。
  • 包含複雜的啟發學習法,以協助預測 imminentfailures。
其他磁碟機的實作,例如 IDE、 ATA 和 SATA:
  • 製造用途一般為輕量及中 dutyuse 容量工作。
  • 目標對象一般在單一的使用者 basedapplications。
  • 某些較新的實作包含複雜的 heuristicsto 說明預測即將發生的失敗。
非 SCSI 的桌面為基礎的控制站需要較多的主要處理器 (CPU) 頻寬,並經常受限於單一使用中的命令。例如,當非 SCSI 磁碟在調整損壞區塊,磁碟機需要主機命令暫緩。ATA 匯流排則提供另一個範例。ATA 匯流排支援 2 部裝置,但僅有一個命令可以使用。這會使一個磁碟機閒置時其他磁碟機為擱置命令服務。在桌面的技術建置 raid 系統全都會出現這些徵狀,並大幅受到最慢的回應。除非這些系統使用進階的設計,其效能將不會與 scsi 系統的效能更有效率。

在其中的情況有桌面磁碟或陣列是適當的低成本解決方案。例如,如果您設定成唯讀的資料庫,以執行回報,您應該不會出現許多影響效能的 OLTP 資料庫磁碟快取停用時。

硬碟機的大小會繼續增加。低成本、 高容量的磁碟可以是很吸引人。但是,當您設定磁碟機,SQL Server 和貴公司的回應時間需求,您應仔細考慮下列問題:
  • 存取路徑的設計
  • 若要停用磁碟上快取需求
下表提供高層級的建議。註解資訊是以常用的製造組態為基礎。

磁碟類型系統基礎註解
IDE 及 ATA
  • 轉速為 7200。
  • 目標鎖定桌面和單一的 userapplications。
  • 根據預設,會啟用磁碟快取。使用 'DiskProperties',若要存取 [內容]、 [原則] 索引標籤,以 controlthe 磁碟快取設定 [硬體] 索引標籤。

    注意部份的磁碟機不受影響這項設定。這些磁碟需要 aspecific 的製造商公用程式停用快取。
  • 磁碟快取應該被停用,以使用 SQL Server 的 thedrive。
  • IDE 及 ata 系統可以延遲主機 commandswhen 在執行調整損壞區塊等活動。這可能導致 toperiods 次的 I/O 活動。
IDE/可攜式電腦
  • 轉速為 5200。
  • 在攜帶式電腦目標。
  • 請參閱 IDE 及 ATA 區段中的其他註解。
  • ReadyDrive 和 NAND 快閃儲存體可能會提供 stableI/O 能力。
SATA
  • 轉速為 7200。
  • 目標鎖定桌面和中型的 rangeservers。
  • 根據預設,會啟用磁碟快取。使用 'DiskProperties',若要存取 [內容]、 [原則] 索引標籤,以 controlthe 磁碟快取設定 [硬體] 索引標籤。

    注意部份的磁碟機不受影響這項設定。這些磁碟需要 aspecific 的製造商公用程式停用快取。
  • 較大的儲存容量及更大,會比 IDEand ATA 計數器組件快取。
  • 磁碟快取應該被停用,以使用 SQL Server 的 thedrive。
  • 較小的佈線及連接。
  • 簡單的相互連線序列連接 SCSI (SAS) 磁碟機和安裝。
  • 包括失敗 predictionconstructs。
SCSI
  • 轉速為 10000 及 15000。
  • 為伺服器和 multiuserapplications 所設計。
  • 專為大容量工作週期及 decreasedfailure 率而設計。
  • 根據預設,會啟用磁碟快取。使用 'DiskProperties',若要存取 [內容]、 [原則] 索引標籤,以 controlthe 磁碟快取設定 [硬體] 索引標籤。

    注意部份的磁碟機不受影響這項設定。這些磁碟需要 aspecific 的製造商公用程式停用快取。
  • 磁碟快取應該被停用,以使用 SQL Server 的 thedrive。
  • 陣列及 SAN 系統一般使用較小 cablingand 連接。
  • 包含故障預測建構。
序列連接 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 I/O 需求的詳細資訊,請造訪下列 Microsoft 網站: http://www.microsoft.com/sql/alwayson/overview.mspx
SQL Server 需要支援保證傳遞到穩定媒體在 Microsoft SQL Server Always-On 存放裝置解決方案檢閱程式之下所述的系統。 如需有關 SQL Server 資料庫引擎的輸入與輸出需求的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
967576 Microsoft SQL Server 資料庫引擎輸入/輸出需求
cacheing cach 快取

警告:本文為自動翻譯

內容

文章識別碼:234656 - 最後檢閱時間:05/01/2015 21:32:00 - 修訂: 1.0

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, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard

  • kbinfo kbmt KB234656 KbMtzh
意見反應
ent.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">