檔案和檔案組體系結構
ps:msdn摘入
sql server 將資料庫對映為一組作業系統檔案。資料和日誌資訊絕不會混合在同乙個檔案中,而且乙個檔案只由乙個資料庫使用。
資料庫檔案
sql server 資料庫具有三種型別的檔案:
1.主資料檔案:主資料檔案是資料庫的起點,指向資料庫中的其他檔案。每個資料庫都有乙個主資料檔案。主資料檔案的推薦副檔名是 .mdf。
2.次要資料檔案:除主資料檔案以外的所有其他資料檔案都是次要資料檔案。某些資料庫可能不含有任何次要資料檔案,而有些資料庫則含有多個次要資料檔案。次要資料檔案的推薦副檔名是 .ndf。
3.日誌檔案:日誌檔案包含著用於恢復資料庫的所有日誌資訊。每個資料庫必須至少有乙個日誌檔案,當然也可以有多個。日誌檔案的推薦副檔名是 .ldf。
ps:在 sql server 中,資料庫中所有檔案的位置都記錄在資料庫的主檔案和 master 資料庫中。大多數情況下,sql server 資料庫引擎使用 master 資料庫中的檔案位置資訊.
疑惑:為何在一碟符將資料庫分成多個資料庫檔案,也可以說 為何要擁有次要資料檔案?
首先明確這樣做不會對效能有所提高,因為它是在乙個物理碟符上的,但是它可以提供靈活性
1.還原的時候的靈活性:還原資料庫的個數是1:1的.如果你本來的資料庫檔案只有乙個,那麼你就只能還原這個檔案.同理,你如果有4個資料庫檔案,那麼就要還原出4個一樣的檔案.問題就在於如果你的單個資料庫檔案過大,
比如100g,但是你沒這麼大的乙個硬碟給你恢復,那麼你就沒辦法.但是如果當時你用的是4個資料庫檔案來分擔你的這個資料庫,假設它都是25g大小.這個時候如果找不到100g的大硬碟,那你可以去找幾個比25g大小的
硬碟就可以了。
2.可以方便地將資料庫遷移到不同驅動器.
邏輯和物理檔名稱
sql server 檔案有兩個名稱:
a:邏輯檔案名稱(logical_file_name) :是在所有 transact-sql 語句中引用物理檔案時所使用的名稱。邏輯檔名必須符合 sql server 識別符號規則,而且在資料庫中的邏輯檔名中必須是唯一的。
b.物理檔名稱(os_file_name) :是包括目錄路徑的物理檔名。它必須符合作業系統檔案命名規則。
ps:sql server 資料和日誌檔案可以儲存在 fat 或 ntfs 檔案系統中。由於 ntfs 在安全方面具有優勢,因此,我們建議您使用 ntfs 檔案系統.
如果多個 sql server 例項在一台計算機上執行,則每個例項都會接收到不同的預設目錄來儲存在該例項中建立的資料庫檔案.
關於sql server 的預設例項和命名例項的檔案位置--http://blog.csdn.net/feixian***/archive/2010/01/28/5267265.aspx
資料庫檔案組
為便於分配和管理,可以將資料庫物件和檔案一起分成檔案組。
使用檔案組的好處:檔案組允許對檔案進行分組,以便於管理和資料的分配/放置。
1例如,可以分別在三個硬碟驅動器上建立三個檔案(data1.ndf、data2.ndf和data3.ndf),並將這三個檔案指派到檔案組fgroup1中。然後,可以明確地在檔案組fgroup1上建立乙個表。
對錶中資料的查詢將分散到三個磁碟 上,3個讀/寫磁頭可以同時並行地訪問資料。這樣可以加快資料庫操作的速度。
2檔案和檔案組還允許資料布局,因為可以在特定的檔案組中建立表。這樣可以改善效能,因為可以將特定表的所有 i/o 都定向到乙個特定的磁碟。
3當使用多個檔案組時,可以分別備份和還原資料庫中的檔案(段落還原)。例如,如果乙個資料庫由幾個分別位於不同的物理磁碟上的檔案組成,當其中乙個磁碟發生故障時,只需還原發生故障的磁碟上的檔案。
有兩種型別的檔案組:
1.主檔案組:包含主資料檔案和任何沒有明確分配給其他檔案組的其他檔案。系統表的所有頁均分配在主檔案組中。
2.使用者定義檔案組:使用者定義檔案組是通過在 create database 或 alter database 語句中使用 filegroup 關鍵字指定的任何檔案組。
ps:日誌檔案不包括在檔案組內。日誌空間與資料空間分開管理。
相關概念:a.乙個檔案不可以是多個檔案組的成員。
b.每個資料庫中均有乙個檔案組被指定為預設檔案組。如果沒有指定預設檔案組,則將主檔案組作為預設檔案組。
如果建立表或索引時未指定檔案組,則將假定所有頁都從預設檔案組分配。一次只能有乙個檔案組作為預設檔案組。
c.事務日誌檔案不能屬於任何檔案組。
下面是使用檔案和檔案組時的一些一般建議:
1大多數資料庫在只有單個資料檔案和單個事務日誌檔案的情況下效能良好。
2.如果使用多個檔案,請為附加檔案建立第二個檔案組,並將其設定為預設檔案組。這樣,主檔案將只包含系統表和物件。
3若要使效能最大化,請在盡可能多的不同的可用本地物理磁碟上建立檔案或檔案組。將爭奪空間最激烈的物件置於不同的檔案組中。
4使用檔案組將物件放置在特定的物理磁碟上。
5將在同一聯接查詢中使用的不同表置於不同的檔案組中。由於採用並行磁碟 i/o 對聯接資料進行搜尋,所以效能將得以改善。
6將最常訪問的表和屬於這些表的非聚集索引置於不同的檔案組中。如果檔案位於不同的物理磁碟上,由於採用並行 i/o,所以效能將得以改善。
7請勿將事務日誌檔案置於其中已有其他檔案和檔案組的物理磁碟上。
8如果有些表不允許修改,可以將它們放入檔案組中,然後將這些檔案組標記為唯讀。這可以防止意外的更新.
檔案和檔案組示例:
以下示例在 sql server 例項上建立了乙個資料庫。
該資料庫包括乙個主資料檔案、乙個使用者定義檔案組和乙個日誌檔案。
主資料檔案在主檔案組中,而使用者定義檔案組包含兩個次要資料檔案。
usemaster;
go create
database
mydb
onprimary
(name
='mydb_primary',
filename=
'c:/program files/microsoft sql server/mssql10.mssqlserver/mssql/data/mydb_prm.mdf',
size=4
mb,
maxsize=10
mb,
filegrowth=1
mb),
filegroup
mydb_fg1
(name
='mydb_fg1_dat1',
filename=
'c:/program files/microsoft sql server/mssql10.mssqlserver/mssql/data/mydb_fg1_1.ndf',
size=1
mb,
maxsize=10
mb,
filegrowth=1
mb),
(name
='mydb_fg1_dat2',
filename=
'c:/program files/microsoft sql server/mssql10.mssqlserver/mssql/data/mydb_fg1_2.ndf',
size=1
mb,
maxsize=10
mb,
filegrowth=1
mb)logon
(name
='mydb_log',
filename=
'c:/program files/microsoft sql server/mssql10.mssqlserver/mssql/data/mydb.ldf',
size=1
mb,
maxsize=10
mb,
filegrowth=1
mb);
goalter database 語句將使用者定義檔案組指定為預設檔案組。然後通過指定使用者定義檔案組來建立表。
alter
database
mydb
modify
filegroup
mydb_fg1
default;
go --建表
usemydb;
create
table
mytable (
cola
intprimary
key,
colb
char(8
)) on
mydb_fg1;
go
檔案和檔案組體系結構
sqlserver將資料庫對映為一組作業系統檔案。資料和日誌資訊絕不會混合在同乙個檔案中,而且乙個檔案只能由乙個資料庫使用。檔案組是命名的檔案集合,用於幫助資料布局和管理任務,例如備份和還原操作。sqlserver資料庫具有三種型別檔案 1.主資料檔案 mdf,字尾名可變,主資料檔案是資料庫的起點,...
SQL Server 檔案和檔案組
在sql server中,資料庫在硬碟上的儲存方式和普通檔案在windows中的儲存方式沒有什麼不同,僅僅是幾個檔案而已。sql server通過管理邏輯上的檔案組的方式來管理檔案。sql server通過檔案組對資料檔案進行管理。我們看到的邏輯資料庫由乙個或者多個檔案組構成。結構圖如下 檔案組管理...
SQL Server 檔案和檔案組
資料庫是資料的倉庫,用於儲存資料,而儲存資料需要媒介,現在的儲存媒介,最常用的是硬碟,土豪一點的伺服器使用固態硬碟 ssd 特殊用途的伺服器使用記憶體。資料庫最常用的儲存檔案是資料檔案和日誌檔案,資料檔案用於儲存資料,由乙個主資料檔案 mdf 和若干個輔助資料檔案 ndf 構成 日誌檔案用於儲存事物...