SQL Server 檔案和檔案組

2022-05-08 08:42:33 字數 2911 閱讀 3445

當資料庫資料過大查詢變慢、空間不夠的時候,我們就需要使用檔案組來擴大資料庫儲存空間,提高查詢效率了。

1、檔案和檔案組的含義與關係

每個資料庫有乙個主資料檔案.和若干個從檔案。檔案是資料庫的物理體現。 檔案組可以包括分布在多個邏輯分割槽的檔案,實現負載平衡。檔案組允許對檔案進行分組,以便於管理和資料的分配/放置。例如,可以分別在三個硬碟驅動器上建立三個檔案(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/08/2012下,執行

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 ondf.

data_space_id =f

.data_space_id

4、msdn官方解釋了解檔案和檔案組

每個sql server 資料庫至少具有兩個作業系統檔案:乙個資料檔案和乙個日誌檔案。資料檔案包含資料和物件,例如表、索引、儲存過程和檢視。日誌檔案包含恢復資料庫中的所有事務所需的資訊。為了便於分配和管理,可以將資料檔案集合起來,放到檔案組中。

資料庫檔案

sql server資料庫具有三種型別的檔案,如下表所示:

檔案 說明

主要主要資料檔案包含資料庫的啟動資訊,並指向資料庫中的其他檔案。使用者資料和物件可儲存在此檔案中,也可以儲存在次要資料檔案中。每個資料庫有乙個主要資料檔案。主要資料檔案的建議副檔名是.mdf。

次要次要資料檔案是可選的,由使用者定義並儲存使用者資料。通過將每個檔案放在不同的磁碟驅動器上,次要檔案可用於將資料分散到多個磁碟上。另外,如果資料庫超過了單個windows 檔案的最大大小,可以使用次要資料檔案,這樣資料庫就能繼續增長。

次要資料檔案的建議副檔名是.ndf。

事務日誌

事務日誌檔案儲存用於恢復資料庫的日誌資訊。每個資料庫必須至少有乙個日誌檔案。事務日誌的建議副檔名是.ldf。

例如,可以建立乙個簡單的資料庫sales,其中包括乙個包含所有資料和物件的主要檔案和乙個包含事務日誌資訊的日誌檔案。也可以建立乙個更複雜的資料庫orders,其中包括乙個主要檔案和五個次要檔案。資料庫中的資料和物件分散在所有六個檔案中,而四個日誌檔案包含事務日誌資訊。

預設情況下,資料和事務日誌被放在同乙個驅動器上的同乙個路徑下。這是為處理單磁碟系統而採用的方法。但是,在生產環境中,這可能不是最佳的方法。建議將資料和日誌檔案放在不同的磁碟上。

檔案組每個資料庫有乙個主要檔案組。此檔案組包含主要資料檔案和未放入其他檔案組的所有次要檔案。可以建立使用者定義的檔案組,用於將資料檔案集合起來,以便於管理、資料分配和放置。

例如,可以分別在三個磁碟驅動器上建立三個檔案data1.ndf、data2.ndf 和 data3.ndf,然後將它們分配給檔案組fgroup1。然後,可以明確地在檔案組fgroup1 上建立乙個表。對錶中資料的查詢將分散到三個磁碟上,從而提高了效能。通過使用在raid(獨立磁碟冗餘陣列)條帶集上建立的單個檔案也能獲得同樣的效能提高。但是,檔案和檔案組使您能夠輕鬆地在新磁碟上新增新檔案。

下表列出了儲存在檔案組中的所有資料檔案。

檔案組 說明

主要包含主要檔案的檔案組。所有系統表都被分配到主要檔案組中。

使用者定義

使用者首次建立資料庫或以後修改資料庫時明確建立的任何檔案組。

預設檔案組

如果在資料庫中建立物件時沒有指定物件所屬的檔案組,物件將被分配給預設檔案組。不管何時,只能將乙個檔案組指定為預設檔案組。預設檔案組中的檔案必須足夠大,能夠容納未分配給其他檔案組的所有新物件。

primary 檔案組是預設檔案組,除非使用alter database 語句進行了更改。但系統物件和表仍然分配給 primary 檔案組,而不是新的預設檔案組

SQL Server 檔案和檔案組

在sql server中,資料庫在硬碟上的儲存方式和普通檔案在windows中的儲存方式沒有什麼不同,僅僅是幾個檔案而已。sql server通過管理邏輯上的檔案組的方式來管理檔案。sql server通過檔案組對資料檔案進行管理。我們看到的邏輯資料庫由乙個或者多個檔案組構成。結構圖如下 檔案組管理...

SQL Server 檔案和檔案組

資料庫是資料的倉庫,用於儲存資料,而儲存資料需要媒介,現在的儲存媒介,最常用的是硬碟,土豪一點的伺服器使用固態硬碟 ssd 特殊用途的伺服器使用記憶體。資料庫最常用的儲存檔案是資料檔案和日誌檔案,資料檔案用於儲存資料,由乙個主資料檔案 mdf 和若干個輔助資料檔案 ndf 構成 日誌檔案用於儲存事物...

SQL Server裡的檔案和檔案組

原文 sql server裡的檔案和檔案組 在今天的文章裡,我想談下sql server裡非常重要的話題 sql server如何處理檔案的檔案組。當你用create database命令建立乙個簡單的資料庫時,sql server為你建立2個檔案 資料檔案本身在有且只有乙個主檔案組裡建立。預設情況...