SQL Server 資料儲存與 NTFS 簇的大小

iSQlServer發表於2009-12-22

首先感謝微軟發明的NTFS檔案系統,確實是非常健壯的檔案系統,功能強大。

簇是磁碟進行I/O讀寫時的最基本單位(就是NTFS中的分配單元)。

今天來說一下在SQL Server的資料儲存中與NTFS簇大小有關的話題。NTFS在超過2GB的分割槽中,格式化時會預設使用4KB的簇,這基本上就成了現在大部分硬碟的簇大小。在簇不大於4KB時,可以使用碎片整理。

NTFS簇大小可以設定成從512B~64KB大小,當然必須在格式化時指定,否則就不可以更改了。簇太小,空間利用率高,但分割槽表較大,碎片多,效能較差;簇太大,空間利用率低,但碎片少,效能較好。於是4KB可謂是普遍的選擇。

現在的硬碟,動則容量幾百GB,空間似乎已經不再是問題。但磁碟的I/O一直是效能的瓶頸,為了提高磁碟讀寫速率,各位可謂是絞盡腦汁了。無論如何,硬碟只要選用了,改變它的物理設計似乎並不太可能,也不推薦這樣做,於是就只能從其它的地方著手了,方法如用RAID陳列了、經常地整理碎片、用好的晶片、用好的資料線了等等,能用的都用了。

SQL Server伺服器是對I/O要求高的應用,它的資料檔案讀寫基本單位是頁,每頁的大小是8KB,連續的8個頁組成一個區,也就是64KB的區,且一般資料檔案都比較大,一般生產環境中,幾GB以上是常見的。並且基本上不會有人在SQL Server的儲存上用碎片整理了,因此我們可以將專用於SQL Server儲存的磁碟分割槽格式化成為64KB的簇,這樣在不浪費空間的前提下,又可以提高效能。

有沒有風險?當然有了,在磁碟出現災難時,丟的資料可能就會多一點,最少會丟64KB了,不過實踐證明這種方案還是非常可行的,因為一般伺服器的RAID陳列分塊也是64KB,兩個都是64KB,就無所謂了。

其它應用場景各位也可以參考,不對之處,歡迎批評。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-623298/,如需轉載,請註明出處,否則將追究法律責任。

相關文章