這篇文章也適合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的完整數據庫備份、差異備份、日志備份,這些SQLSERVER的備份功能是可以正常使用的