SQL Server 2005中的檔案和檔案組
每個資料庫有一個主資料檔案.和若干個從檔案。檔案是資料庫的物理體現。 檔案組可以包括分佈在多個邏輯分割槽的檔案,實現負載平衡。檔案組允許對檔案進行分組,以便於管理和資料的分配/放置。例如,可以分別在三個硬碟驅動器上創 建三個檔案(Data1.ndf、Data2.ndf 和 Data3.ndf),並將這三個檔案指派到檔案組 fgroup1 中。然後,可以明確地在檔案組 fgroup1 上建立一個表。對錶中資料的查詢將分散到三個磁碟上,因而效能得以提高。在 RAID(磁碟冗餘陣列)條帶集上建立單個檔案也可以獲得相同的效能改善。然而,檔案和檔案組使您得以在新磁碟上輕易地新增新檔案。另外,如果資料庫超過 單個 Microsoft Windows 檔案的最大大小,則可以使用次要資料檔案允許資料庫繼續增長。
2、檔案、檔案組在實踐應用中常見的問題
通常情況下我們構造的資料庫都只有兩個檔案,mdf檔案和ldf檔案.但是這樣有兩個缺點:
(一)容易導致檔案過大
我們知道,mdf檔案是資料庫檔案,這樣的話也就意味著隨著資料庫的增大mdf就會相應的增大,顯然在現在的應用中資料膨脹是太常見的事情了,當你 的應用變大後,mdf檔案也會變大,然而windows對檔案的大小是有要求的,這樣的話很容易導致mdf檔案達到windows所允許的檔案大小的界限 (於是資料庫就崩潰了)。
(二)沒有利用到磁碟陣列
大型的伺服器好多都有磁碟陣列,你可以把磁碟陣列簡單的假象成n個一塊轉動的磁碟,磁碟陣列的設計是希望通過多個磁碟的串聯來得到更大的讀寫效率. 但是如果你的資料庫只有一個mdf檔案(ldf檔案暫時不考慮),那麼你總是隻能夠利用這個磁碟陣列裡面的一個磁碟而已.那樣的話昂貴的磁碟陣列的效率就 由並聯變成串聯了.試想如果我們能夠讓mdf分散成多個檔案,比如說磁碟陣列上的每個磁碟中都分配一個檔案,然後把mdf中的資料分散到各個檔案中,我在 讀取的時候就是串聯的讀取了,這樣就充分的利用了磁碟陣的存取效能.
這兩個問題平常我們沒有遇到過(條件不具備),但是做大型的服務開發的時候這幾乎是致命的.
3、查詢檔案組和檔案語句
這在2005下,執行
SELECT df.[name],
df.physical_name,
df.[size],
df.growth,
f.[name][filegroup],
f.is_default
FROM sys.database_files df JOIN sys.filegroups f
ON df.data_space_id = f.data_space_id
4、MSDN官方解釋
瞭解檔案和檔案組
每個 SQL Server 資料庫至少具有兩個作業系統檔案:一個資料檔案和一個日誌檔案。資料檔案包含資料和物件,例如表、索引、儲存過程和檢視。日誌檔案包含恢復資料庫中的所有事務所需的資訊。為了便於分配和管理,可以將資料檔案集合起來,放到檔案組中。
à資料庫檔案
SQL Server 資料庫具有三種型別的檔案,如下所示
主要資料檔案
主要資料檔案包含資料庫的啟動資訊,並指向資料庫中的其他檔案。使用者資料和物件可儲存在此檔案中,也可以儲存在次要資料檔案中。每個資料庫有一個主要資料檔案。主要資料檔案的建議副檔名是 .mdf.
次要資料檔案
是可選的,由使用者定義並儲存使用者資料。通過將每個檔案放在不同的磁碟驅動器上,次要檔案可用於將資料分散到多個磁碟上。另外,如果資料庫超過了單個
Windows 檔案的最大大小,可以使用次要資料檔案,這樣資料庫就能繼續增長。次要資料檔案的建議副檔名是 .ndf。
事務日誌檔案
事務日誌檔案儲存用於恢復資料庫的日誌資訊。每個資料庫必須至少有一個日誌檔案。事務日誌的建議副檔名是 .ldf.
à檔案組
每個資料庫有一個主要檔案組。此檔案組包含主要資料檔案和未放入其他檔案組的所有次要檔案。可以建立使用者定義的檔案組,用於將資料檔案集合起來,以便於管理、資料分配和放置。
例如,可以分別在三個磁碟驅動器上建立三個檔案 Data1.ndf、Data2.ndf 和 Data3.ndf,然後將它們分配給檔案組 fgroup1。然後,可以明確地在檔案組 fgroup1 上建立一個表。對錶中資料的查詢將分散到三個磁碟上,從而提高了效能。通過使用在 RAID(獨立磁碟冗餘陣列)條帶集上建立的單個檔案也能獲得同樣的效能提高。但是,檔案和檔案組使您能夠輕鬆地在新磁碟上新增新檔案。
以下列出了儲存在檔案組中的所有資料檔案。
主檔案組
主要包含主要檔案的檔案組。所有系統表都被分配到主要檔案組中。
使用者定義檔案組
使用者首次建立資料庫或以後修改資料庫時明確建立的任何檔案組
預設檔案組
如果在資料庫中建立物件時沒有指定物件所屬的檔案組,物件將被分配給預設檔案組。不管何時,只能將一個檔案組指定為預設檔案組。預設檔案組中的檔案必須足夠大,能夠容納未分配給其他檔案組的所有新物件。
PRIMARY 檔案組是預設檔案組,除非使用 ALTER DATABASE 語句進行了更改。但系統物件和表仍然分配給 PRIMARY 檔案組,而不是新的預設檔案組。
5、操作例項
--(5.1)建立資料庫
--切換到 master 資料庫
USE master
GO
create database db_Study
on primary --主檔案組和主要資料檔案
(name='db_study_Primary',
filename='D:\study\db_study_pri.mdf'),
filegroup db_Study_filegroup1 --使用者定義檔案組1
(name='db_study_fg_data1',
filename='D:\study\db_study_fg_data1_1.ndf'),--次要資料檔案1
(name='db_study_fg_data2' ,
filename='D:\study\db_study_fg_data2_2.ndf'),--次要資料檔案2
filegroup db_Study_filegroup2
(name='db_study_fg_data3',
filename='D:\study\db_study_fg_data3_1.ndf')
log on
(name='db_study_log',
filename='D:\study\db_study.ldf')
go
--5.2查詢檔案組和檔案
SELECT df.[name],
df.physical_name,
df.[size],
df.growth,
f.[name][filegroup],
f.is_default
FROM sys.database_files df JOIN sys.filegroups f
ON df.data_space_id = f.data_space_id
/*
name physical_name size growth filegroup is_default
db_study_Primary D:\study\db_study_pri.mdf 280 128 PRIMARY 1
db_study_fg_data1 D:\study\db_study_fg_data1_1.ndf 128 128 db_Study_filegroup1 0
db_study_fg_data2 D:\study\db_study_fg_data2_2.ndf 128 128 db_Study_filegroup1 0
db_study_fg_data3 D:\study\db_study_fg_data3_1.ndf 128 128 db_Study_filegroup2 0
*/
--5.3修改預設資料檔案組
alter database db_study
modify filegroup db_study_filegroup1 default
--5.4
--在預設檔案組db_study_filegroup1建立表,
--並且指定影像資料儲存在使用者定義檔案組db_study_filegroup1
create table my_test
(
ID int primary key,
[Name] varchar(10),
PIC image
)textimage_on db_study_filegroup2
--在使用者定義檔案組db_study_filegroup2上建立索引
create index ix_my_test on my_test(ID) on db_study_filegroup2
GO
--5.5將要刪除資料檔案db_study_fg_data1的資料轉移到其他資料檔案中,
--並且清空資料檔案db_study_fg_data1
DBCC SHRINKFILE(db_study_fg_data1,EMPTYFILE)
go
--刪除資料檔案db_study_fg_data1
ALTER DATABASE DB_study
REMOVE FILE db_study_fg_data1
go
作者:wufeng4552 部落格:http://blog.csdn.net/wufeng4552
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-628721/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 中資料庫檔案的存放方式,檔案和檔案組SQLServer資料庫
- SQL Server 2008還原檔案和檔案組SQLServer
- SQL Server 2008 備份檔案和檔案組SQLServer
- 匯入xml檔案到SQL Server 2005XMLSQLServer
- .sql檔案匯入到sql server中SQLServer
- SQL Server 2005 日誌刪除和日誌檔案限制SQLServer
- sql server如何重建索引到其它檔案組SQLServer索引
- SQL Server 2005日誌檔案損壞的處理方法SQLServer
- SQL Server 檔案路徑SQLServer
- 資料庫檔案和檔案組資料庫
- SQL Server 2005無日誌檔案附加資料庫SQLServer資料庫
- 在SQL Server中儲存和輸出任意型別的檔案SQLServer型別
- 配置SQL Server檔案組對應不同的RAID系統SQLServerAI
- SQL Server中讀取XML檔案的簡單做法SQLServerXML
- SQL Server中 ldf 檔案過大的解決方法SQLServer
- SQL Server 資料庫檔案的分離和附加SQLServer資料庫
- 在SQL Server中完美壓縮.mdf檔案DVSQLServer
- Sql server:從XML檔案中讀取配置資訊SQLServerXML
- 減小SQL SERVER的日誌檔案SQLServer
- 檢視Sql Server的log檔案大小SQLServer
- 對日誌檔案組和日誌檔案組成員的管理
- sql server2005檔案解除安裝順序【轉載微軟】SQLServer微軟
- sql server 2005 壓縮例項下所有資料庫檔案及日誌檔案 語句【轉】SQLServer資料庫
- SQL Server解除安裝配置檔案SQLServer
- Sql Server 資料庫中呼叫dll檔案的過程SQLServer資料庫
- 【SQL Server】--SQL Server資料庫bak檔案還原SQLServer資料庫
- JSP中的TAG檔案和TLD檔案JS
- 如何把 .csv 的檔案匯入資料庫SQL SERVER 中!資料庫SQLServer
- SQL Server 檔案系統mdf, ndf, ldf ...SQLServer
- SQL Server ldf 檔案損壞恢復SQLServer
- SQL Server資料庫檔案與Windows系統透明檔案壓縮SQLServer資料庫Windows
- SQL Server 2000 中清空 LOG 檔案一法 (轉)SQLServer
- 備份次新的DR(sql server dmp檔案)SQLServer
- 讓SQL Server呼叫DLL檔案的方法詳解SQLServer
- SQL Server的MDF檔案恢復/修復方法SQLServer
- 用VB和SQL Server實現檔案上傳(方案例)SQLServer
- SQL Server Reporting Services:無法檢索應用程式檔案。部署中的檔案已損壞SQLServer
- TC中開啟檔案和寫入檔案