標籤:des style blog http color 使用 檔案 資料
檔案和檔案組簡介
在SQL Server中,資料庫在硬碟上的儲存方式和普通檔案在Windows中的儲存方式沒有什麼不同,僅僅是幾個檔案而已。SQL Server通過管理邏輯上的檔案組的方式來管理檔案。
SQL Server通過檔案組對資料檔案進行管理。我們看到的邏輯資料庫由一個或者多個檔案組構成。
結構圖如下:
檔案組管理著磁碟上的檔案,檔案中存放的就是SQL Server的實際資料。
為什麼通過檔案組來管理檔案
從使用者的角度來說,建立對象時需要指定隱藏檔組的只有三種資料對象:表,索引和大對象(LOB)。
使用檔案組可以隔離使用者對檔案的依賴,使得使用者僅僅針對檔案組來建立表和索引,而不用關心實際磁碟中的檔案的情況。當檔案移動或修改時,由於使用者建立的表和索引是建立在檔案組上的,並不依賴具體檔案,因此SQL Server可以放心的管理檔案。
另外,使用檔案組的方式來管理檔案,可以使得同一檔案組內的檔案分布在不同的硬碟中,能夠大大提供IO效能。
SQL Server根據每個檔案設定的初始大小和增量值自動分配新加入的空間,假設在同一檔案A設定的大小為檔案B的兩倍,新增一個資料佔用3頁,則按比例將2頁分配到檔案A中,1頁分配到檔案B中。
檔案的分類
- 首要檔案:這個檔案是必須有的,而且只能有一個。這個檔案額外存放了其他檔案的位置等資訊,副檔名為.mdf。
- 次要檔案:可以建任意多個,用於不同目的存放,副檔名為.ndf。
- 記錄檔:存放日誌,副檔名為.ldf。
上面說的集中檔案名稱副檔名可以任意修改,推薦使用預設的副檔名。在SQL Server之後,還新增了檔案流資料檔案和全文索引檔案。
通過sys.database_files系統檢視表可以查看SQL Server資料庫中檔案的情況。
SELECT name,type_desc,physical_name,state_desc,size,growthFROM sys.database_files
結果如下:
注意type_desc列,首要檔案和次要檔案都是ROWS,表示儲存的是行(Row)。
如果一個表是存在物理上的多個檔案中時,則表的資料頁的組織為N(N為具體的幾個檔案)個B樹。而不是一個對象為一個B樹。
建立和使用檔案組
建立檔案或是檔案組合一通過在Management Studio或者使用T-SQL語句進行。對於一個資料庫來說,既可以在建立時增加檔案和檔案組,也可以向現有的資料庫添加檔案和檔案組。
建立檔案組操作:
建立檔案操作:
注意:檔案的所屬檔案組一旦設定了就不能夠更改了。
下面給出一個建立索引時,指定存放到檔案組的SQL執行個體:
--添加索引時,指定存放的檔案組 CREATE NONCLUSTERED INDEX idx_on_other_fileGroue on ProductDemo(UPCode) ON AddFileGroup --紅色部分是主角,指定檔案組。 --如果不指定檔案組,則存放到預設的檔案組當中 CREATE NONCLUSTERED INDEX idx_on_other_fileGroue on ProductDemo(UPCode)
使用多個檔案的優點與缺點
在大多數情況下,小型的資料庫並不需要建立多個檔案來存放資料。但是隨著資料的增長,單個檔案的弊端就會出現。
- 首先,使用多個檔案分布到不同的磁碟分割(多個硬碟)能夠幾大提高IO效能。
- 其次,多個檔案對於資料比較多的資料庫來說,備份和恢複都會方便。
- 但是,多檔案需要佔用更多的磁碟空間,因為每個檔案中都有自己的一套B樹組織方式和自己的增長空間。當然也有自己的片段。
- 總體來說,多個檔案帶來的優點是遠遠大於弊端的。