這篇文章也適合ORACLE DBA和MYSQL DBA 閱讀
裸裝置適用於Linux和Windows
在ORACLE和MYSQL裡也是支援裸裝置的!!
介紹
大家看到這個標題一定是一頭霧水吧,裸裝置??裸體的裝置??太邪惡了o(∩_∩)o
裸裝置:有人叫raw disk,也有人叫raw device
百度一下:
http://baike.baidu.com/link?url=ran4ytgFFrsCmAywsOLa0uQczn8rxsEwWXF5WjdTNLx3Sv9Ng2Y1ScJsLT8k7CO7G1gOsiuq3EILSVhbYsgsSa
裸裝置(raw device),也叫裸分區(原始分區),是一種沒有經過格式化,不被Unix通過檔案系統來讀取的特殊字元裝置。
它由應用程式負責對它進行讀寫操作。不經過檔案系統的緩衝。
它是不被作業系統直接管理的裝置。
這種裝置少了作業系統這一層,I/O效率更高。不少資料庫都能通過使用裸裝置作為儲存介質來提高I/O效率。
因為使用裸裝置避免了再經過作業系統這一層,資料直接從Disk到資料庫進行傳輸,所以使用裸裝置對於讀寫頻繁的資料庫應用來說,可以極大地提高資料庫系統的效能。
當然,這是以磁碟的 I/O 非常大,磁碟I/O已經稱為系統瓶頸的情況下才成立。
如果磁碟讀寫確實非常頻繁,以至於磁碟讀寫成為系統瓶頸的情況成立,那麼採用裸裝置確實可以大大提高效能
在宋沄劍的文章裡《SQL Server資料庫損壞、檢測以及簡單的修複辦法》
在這個過程中,資料髒頁由記憶體寫入持久化的IO子系統,在此期間,按照IO子系統的不同,資料可能經過這幾層:
Windows(寫資料一定調用的是WINDOWS API) Windows底層的中介層(殺毒軟體,磁碟加密系統)
RAID控制器(IO子系統做了RAID) 磁碟或SSD等持久化儲存空間
其實如果使用了裸裝置,資料是不需要經過I/O子系統的,直接寫入到檔案中
根據MSDN說一下裸裝置在SQLSERVER的限制
Using Raw Partitions
SQLSERVER2000支援資料庫建立在使用raw格式的分區。raw格式分區是一種沒有格式化的檔案系統,就像FAT檔案系統和NTFS檔案系統。
在某些情況下,資料庫建立在raw格式的分區能產生重要的效能提升相對於NTFS或FAT檔案系統。
然而,大多數情況下,還是建議使用NTFS或FAT分區來存放資料庫檔案
當你把資料庫建立在raw分區下的時候,你不能指定資料庫資料檔案的實體名稱字;你只能夠指定資料庫資料檔案要存放的那個磁碟的磁碟機代號
如果你使用Windows2000伺服器版,你可以掛載一個使用raw檔案格式的磁碟機。當你在一個空檔案夾掛載一個本地磁碟機的時候,
Windows2000會分配一個磁碟路徑,這樣會比只分配一個磁碟機代號好。
掛載磁碟機不受26個盤符的限制(分區超過26個就不能再建立分區了),因此,你可以使用不受數量限制的raw分區。
下面有幾個限制是需要考慮的,當使用raw分區的時候
(1)每一個raw分區只能有一個資料庫資料檔案。
(2)標準的檔案操作,例如:複製檔案,移動檔案,刪除檔案都不能在raw分區使用
(3)放在raw分區的資料庫檔案都不能直接使用備份軟體備份,例如Acronis.True.Image.Echo.Enterprise.Server這些都不能用
但是SQLSERVER的完整Database Backup、差異備份、記錄備份,這些SQLSERVER的備份功能是可以正常使用的