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檔案匯入到sql server中SQLServer
- SQL Server 資料庫檔案的分離和附加SQLServer資料庫
- SQL Server資料庫還原過程記錄,bak檔案+mdf檔案SQLServer資料庫
- 在SQL Server中完美壓縮.mdf檔案DVSQLServer
- SQL SERVER備份資料庫檔案(使用SSMS)SQLServer資料庫SSM
- SQL server資料庫建立程式碼 filegroup檔案組修改的示例程式碼SQLServer資料庫
- Sql Server資料庫檔案丟失的恢復方法SQLServer資料庫
- Sql Server 資料庫中呼叫dll檔案的過程SQLServer資料庫
- Rust 模組和檔案 - [譯]Rust
- 檔案和檔案系統
- SQL Server資料檔案增長檢測(三)RFSQLServer
- SQL Server資料檔案增長檢測(一)FMSQLServer
- SQL Server 2008檔案流功能應用設想YCSQLServer
- pandas讀 .sql檔案SQL
- sql檔案備份SQL
- Tomcat 的 Server 檔案配置詳解!!!TomcatServer
- Python:讀寫檔案(I/O) | 組織檔案Python
- locate標頭檔案和庫檔案
- navicat匯入sql檔案SQL
- Navicat如何匯入和匯出sql檔案SQL
- tidb-server 的配置檔案在哪裡?TiDBServer
- git的gitignore檔案排除資料夾和檔案Git
- Oracle資料檔案和臨時檔案的管理Oracle
- 網站搬家時匯入SQL Server備份檔案失敗網站SQLServer
- SQL Server資料庫mdf檔案中了勒索病毒*.mdf.chchSQLServer資料庫
- SQL Server資料庫mdf檔案中了勒索病毒*.mdf.bigbosshorseSQLServer資料庫
- SQL Server資料庫mdf檔案中了勒索病毒*.mdf.ReadInstructionsSQLServer資料庫Struct
- DataGear 變更部署資料庫為SQL Server填坑指南(含轉寫後的SQL server程式碼及SQL server配置檔案)資料庫SQLServer
- Linux-檔案寫入和檔案同步Linux
- 檔案描述符和檔案系統
- 核心模組建立檔案
- 位元組碼檔案解剖
- linux組資訊檔案Linux
- 如何在 Linux 中分割和重組檔案!Linux
- spring boot 執行sql檔案Spring BootSQL
- mybatis之sql查詢配置檔案resultType和resultMapMyBatisSQL
- 關於檔案系統在建立目錄檔案和普通檔案時的區別
- .ts檔案和d.ts檔案對比
- #用openfiledialog檔案和savefileDialog開啟和儲存檔案