主頁 > 知識庫 > SQLserver 2005文件和文件組的作用說明

SQLserver 2005文件和文件組的作用說明

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 百度競價(jià)排名 鐵路電話系統(tǒng) 呼叫中心市場需求 AI電銷 地方門戶網(wǎng)站 服務(wù)外包 Linux服務(wù)器
1、文件和文件組的含義與關(guān)系
每個數(shù)據(jù)庫有一個主數(shù)據(jù)文件.和若干個從文件。文件是數(shù)據(jù)庫的物理體現(xiàn)。 文件組可以包括分布在多個邏輯分區(qū)的文件,實(shí)現(xiàn)負(fù)載平衡。文件組允許對文件進(jìn)行分組,以便于管理和數(shù)據(jù)的分配/放置。例如,可以分別在三個硬盤驅(qū)動器上創(chuàng)建三個文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并將這三個文件指派到文件組 fgroup1 中。然后,可以明確地在文件組 fgroup1 上創(chuàng)建一個表。對表中數(shù)據(jù)的查詢將分散到三個磁盤上,因而性能得以提高。在 RAID(磁盤冗余陣列)條帶集上創(chuàng)建單個文件也可以獲得相同的性能改善。然而,文件和文件組使您得以在新磁盤上輕易地添加新文件。另外,如果數(shù)據(jù)庫超過單個 Microsoft Windows 文件的最大大小,則可以使用次要數(shù)據(jù)文件允許數(shù)據(jù)庫繼續(xù)增長。
2、文件、文件組在實(shí)踐應(yīng)用中常見的問題
通常情況下我們構(gòu)造的數(shù)據(jù)庫都只有兩個文件,mdf文件和ldf文件.但是這樣有兩個缺點(diǎn):
(一)容易導(dǎo)致文件過大
我們知道,mdf文件是數(shù)據(jù)庫文件,這樣的話也就意味著隨著數(shù)據(jù)庫的增大mdf就會相應(yīng)的增大,顯然在現(xiàn)在的應(yīng)用中數(shù)據(jù)膨脹是太常見的事情了,當(dāng)你的應(yīng)用變大后,mdf文件也會變大,然而windows對文件的大小是有要求的,這樣的話很容易導(dǎo)致mdf文件達(dá)到windows所允許的文件大小的界限(于是數(shù)據(jù)庫就崩潰了)。
(二)沒有利用到磁盤陣列
大型的服務(wù)器好多都有磁盤陣列,你可以把磁盤陣列簡單的假象成n個一塊轉(zhuǎn)動的磁盤,磁盤陣列的設(shè)計(jì)是希望通過多個磁盤的串聯(lián)來得到更大的讀寫效率.但是如果你的數(shù)據(jù)庫只有一個mdf文件(ldf文件暫時不考慮),那么你總是只能夠利用這個磁盤陣列里面的一個磁盤而已.那樣的話昂貴的磁盤陣列的效率就由并聯(lián)變成串聯(lián)了.試想如果我們能夠讓mdf分散成多個文件,比如說磁盤陣列上的每個磁盤中都分配一個文件,然后把mdf中的數(shù)據(jù)分散到各個文件中,我在讀取的時候就是串聯(lián)的讀取了,這樣就充分的利用了磁盤陣的存取效能.
這兩個問題平常我們沒有遇到過(條件不具備),但是做大型的服務(wù)開發(fā)的時候這幾乎是致命的.
3、查詢文件組和文件語句
這在2005下,運(yùn)行
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 數(shù)據(jù)庫至少具有兩個操作系統(tǒng)文件:一個數(shù)據(jù)文件和一個日志文件。數(shù)據(jù)文件包含數(shù)據(jù)和對象,例如表、索引、存儲過程和視圖。日志文件包含恢復(fù)數(shù)據(jù)庫中的所有事務(wù)所需的信息。為了便于分配和管理,可以將數(shù)據(jù)文件集合起來,放到文件組中。
à數(shù)據(jù)庫文件
SQL Server 數(shù)據(jù)庫具有三種類型的文件,如下所示
主要數(shù)據(jù)文件
主要數(shù)據(jù)文件包含數(shù)據(jù)庫的啟動信息,并指向數(shù)據(jù)庫中的其他文件。用戶數(shù)據(jù)和對象可存儲在此文件中,也可以存儲在次要數(shù)據(jù)文件中。每個數(shù)據(jù)庫有一個主要數(shù)據(jù)文件。主要數(shù)據(jù)文件的建議文件擴(kuò)展名是 .mdf.
次要數(shù)據(jù)文件
是可選的,由用戶定義并存儲用戶數(shù)據(jù)。通過將每個文件放在不同的磁盤驅(qū)動器上,次要文件可用于將數(shù)據(jù)分散到多個磁盤上。另外,如果數(shù)據(jù)庫超過了單個 Windows 文件的最大大小,可以使用次要數(shù)據(jù)文件,這樣數(shù)據(jù)庫就能繼續(xù)增長。次要數(shù)據(jù)文件的建議文件擴(kuò)展名是 .ndf。
事務(wù)日志文件
事務(wù)日志文件保存用于恢復(fù)數(shù)據(jù)庫的日志信息。每個數(shù)據(jù)庫必須至少有一個日志文件。事務(wù)日志的建議文件擴(kuò)展名是 .ldf.
à文件組
每個數(shù)據(jù)庫有一個主要文件組。此文件組包含主要數(shù)據(jù)文件和未放入其他文件組的所有次要文件??梢詣?chuàng)建用戶定義的文件組,用于將數(shù)據(jù)文件集合起來,以便于管理、數(shù)據(jù)分配和放置。
例如,可以分別在三個磁盤驅(qū)動器上創(chuàng)建三個文件 Data1.ndf、Data2.ndf 和 Data3.ndf,然后將它們分配給文件組 fgroup1。然后,可以明確地在文件組 fgroup1 上創(chuàng)建一個表。對表中數(shù)據(jù)的查詢將分散到三個磁盤上,從而提高了性能。通過使用在 RAID(獨(dú)立磁盤冗余陣列)條帶集上創(chuàng)建的單個文件也能獲得同樣的性能提高。但是,文件和文件組使您能夠輕松地在新磁盤上添加新文件。
以下列出了存儲在文件組中的所有數(shù)據(jù)文件。
主文件組
主要包含主要文件的文件組。所有系統(tǒng)表都被分配到主要文件組中。
用戶定義文件組
用戶首次創(chuàng)建數(shù)據(jù)庫或以后修改數(shù)據(jù)庫時明確創(chuàng)建的任何文件組
默認(rèn)文件組
如果在數(shù)據(jù)庫中創(chuàng)建對象時沒有指定對象所屬的文件組,對象將被分配給默認(rèn)文件組。不管何時,只能將一個文件組指定為默認(rèn)文件組。默認(rèn)文件組中的文件必須足夠大,能夠容納未分配給其他文件組的所有新對象。
PRIMARY 文件組是默認(rèn)文件組,除非使用 ALTER DATABASE 語句進(jìn)行了更改。但系統(tǒng)對象和表仍然分配給 PRIMARY 文件組,而不是新的默認(rèn)文件組。
5、操作實(shí)例
復(fù)制代碼 代碼如下:

--(5.1)創(chuàng)建數(shù)據(jù)庫
--切換到 master 數(shù)據(jù)庫
USE master
GO
create database db_Study
on primary --主文件組和主要數(shù)據(jù)文件
(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'),--次要數(shù)據(jù)文件1
(name='db_study_fg_data2' ,
filename='D:\study\db_study_fg_data2_2.ndf'),--次要數(shù)據(jù)文件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修改默認(rèn)數(shù)據(jù)文件組
alter database db_study
modify filegroup db_study_filegroup1 default
--5.4
--在默認(rèn)文件組db_study_filegroup1創(chuàng)建表,
--并且指定圖像數(shù)據(jù)保存在用戶定義文件組db_study_filegroup1
create table my_test
(
ID int primary key,
[Name] varchar(10),
PIC image
)textimage_on db_study_filegroup2
--在用戶定義文件組db_study_filegroup2上創(chuàng)建索引
create index ix_my_test on my_test(ID) on db_study_filegroup2
GO
--5.5將要刪除數(shù)據(jù)文件db_study_fg_data1的數(shù)據(jù)轉(zhuǎn)移到其他數(shù)據(jù)文件中,
--并且清空數(shù)據(jù)文件db_study_fg_data1
DBCC SHRINKFILE(db_study_fg_data1,EMPTYFILE)
go
--刪除數(shù)據(jù)文件db_study_fg_data1
ALTER DATABASE DB_study
REMOVE FILE db_study_fg_data1
go

標(biāo)簽:仙桃 衡水 湖南 崇左 銅川 黃山 湘潭 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQLserver 2005文件和文件組的作用說明》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266