數據文件與文件組

    公司新買進了一些磁盤,有1.6T,計劃用在數據庫服務器和文件服務器中。這麼大的磁盤,如何才能最大化的利用它呢?

以前在網絡上看將一些頻繁表建立到不同的文件中(磁盤分區),一直覺得很神祕。今天在數據庫幫助文檔中看到文件與文件組的用法,才知道我們公司太古董了,一直都用一個數據庫一個文件,一個文件組。數據庫慢也沒人從此方面下手改善。看了幫助文檔後,才發現其實沒那麼難。現在把此方面的文件貼出來:

 

以下來自SQL SERVER 2000幫助文檔

Microsoft® SQL Server™ 2000 將數據庫映射到一組操作系統文件上。數據和日誌信息絕不混合在同一個文件中,而且個別文件只由一個數據庫使用。

SQL Server 2000 數據庫有三種類型的文件:

  • 主要數據文件

    主要數據文件是數據庫的起點,指向數據庫中文件的其它部分。每個數據庫都有一個主要數據文件。主要數據文件的推薦文件擴展名是 .mdf。

  • 次要數據文件

    次要數據文件包含除主要數據文件外的所有數據文件。有些數據庫可能沒有次要數據文件,而有些數據庫則有多個次要數據文件。次要數據文件的推薦文件擴展名是 .ndf。

  • 日誌文件

    日誌文件包含恢復數據庫所需的所有日誌信息。每個數據庫必須至少有一個日誌文件,但可以不止一個。日誌文件的推薦文件擴展名是 .ldf。

SQL Server 2000 不強制使用 .mdf、.ndf 和 .ldf 文件擴展名,但建議使用這些擴展名以幫助標識文件的用途。

在 SQL Server 2000 中,某個數據庫中的所有文件的位置都記錄在 master 數據庫和該數據庫的主文件中。大多數情況下,數據庫引擎使用 master 數據庫中的文件位置信息。不過對於某些操作,數據庫引擎使用主文件中的文件位置信息初始化 master 數據庫中的文件位置項:

  • 當使用 sp_attach_db 系統存儲過程附加數據庫時。
  • 當從 SQL Server 7.0 版升級到 SQL Server 2000 時。
  • 當還原 master 數據庫時。

SQL Server 2000 文件有兩個名稱:

  • logical_file_name 是在所有 Transact-SQL 語句中引用文件時所使用的名稱。

    邏輯文件名必須遵守 SQL Server 標識符規則,且對數據庫必須是唯一的。

  • os_file_name 是物理文件名。

    物理文件名必須遵從 Microsoft Windows NT® 或 Microsoft Windows® 98 和 Microsoft Windows 95 的文件名規則。

下面是在 SQL Server 2000 默認實例上創建的數據庫的邏輯文件名和物理文件名示例:

SQL Server 數據和日誌文件可以放置在 FAT 或 NTFS 文件系統中,但不能放在壓縮文件系統中。

在 SQL Server 2000 中,數據文件的頁按順序編號,文件首頁的頁碼是 0。每個文件都有一個文件 ID 號。在數據庫中唯一標識一頁需要同時使用文件 ID 和頁碼。下例顯示包含 4-MB 主要數據文件和 1-MB 次要數據文件的數據庫中的頁碼。

在每個文件中,第一頁是包含文件特性信息的文件的頁首頁。在文件開始處的其它幾頁也包含系統信息(如分配映射表)。系統頁存儲在主要數據文件和第一個日誌文件中,其中有一個是包含數據庫屬性信息的數據庫引導頁。

SQL Server 2000 文件可以從它們最初指定的大小自動增長。定義文件時可以指定增量。每次填充文件時,均按這個增量值增加它的大小。如果在文件組中有多個文件,這些文件在全部填滿之前不自動增長。填滿後,這些文件使用循環算法進行增長。

還可以指定每個文件的最大大小。如果沒有指定最大大小,文件可以一直增長到用完磁盤上的所有可用空間。如果 SQL Server 作爲數據庫嵌入應用程序,而該應用程序的用戶無法迅速與系統管理員聯繫,此功能在這種情況下特別有用。用戶可以讓文件按需要自動增長,以減輕監視數據庫中的可用空間量和手工分配額外空間的管理負擔。

如果有多個 SQL Server 實例在單個計算機上運行,則每個實例獲得不同的默認目錄來存儲該實例中創建的數據庫文件。有關更多信息,請參見定位目錄和文件

數據庫文件組

出於分配和管理目的,可以將數據庫文件分成不同的文件組。一些系統可以通過控制在特定磁盤驅動器上放置的數據和索引來提高自身的性能。文件組可以對此進程提供幫助。系統管理員可以爲每個磁盤驅動器創建文件組,然後將特定的表、索引、或表中的 textntextimage 數據指派給特定的文件組。

沒有一個文件可以是一個以上文件組的成員。表、索引、以及 textntextimage 數據可以與文件組相關聯,在這種情況下,它們的所有頁都將分配在那個文件組中。

日誌文件不能作爲文件組的一部分。日誌空間與數據空間分開管理。

文件組中的文件不自動增長,除非文件組中的文件全都沒有可用空間。

有兩種類型的文件組:

  • 主要文件組

    主文件組包含主要數據文件和任何沒有明確指派給其它文件組的其它文件。系統表的所有頁均分配在主文件組中。

  • 用戶定義文件組

    用戶定義文件組是在 CREATE DATABASE 或 ALTER DATABASE 語句中,使用 FILEGROUP 關鍵字指定的文件組。

每個數據庫中都有一個文件組作爲默認文件組運行。當 SQL Server 給創建時沒有爲其指定文件組的表或索引分配頁時,將從默認文件組中進行分配。一次只能有一個文件組作爲默認文件組。db_owner 固定數據庫角色成員可以將默認文件組從一個文件組切換到另一個。如果沒有指定默認文件組,則主文件組是默認文件組。

SQL Server 2000 在沒有文件組時也能有效地工作,因此許多系統不需要指定用戶定義文件組。在這種情況下,所有文件都包含在主文件組中,而且 SQL Server 2000 可以在數據庫內的任何位置分配數據。文件組不是在多個驅動器之間分配 I/O 的唯一方法。

db_owner 固定數據庫角色成員可以備份和還原個別的文件或文件組,而不用備份或還原整個數據庫。

下例在 SQL Server 2000 的默認實例上創建數據庫。該數據庫包括一個主要數據文件、一個用戶定義的文件組和一個日誌文件。主要數據文件在主文件組中,而用戶定義文件組有兩個次要數據文件。ALTER DATABASE 語句將用戶定義文件組指定爲默認文件組。之後,通過指定用戶定義的文件組來創建表。

USE master
GO
-- Create the database with the default data
-- filegroup and the log file. Specify the
-- growth increment and the max size for the
-- primary data file.
CREATE DATABASE MyDB
ON PRIMARY
  ( NAME='MyDB_Primary',
   FILE NAME=
      'c:/Program Files/Microsoft SQL Server/MSSQL/data/MyDB_Prm.mdf',
   SIZE=4,
   MAXSIZE=10,
   FILEGROWTH=1),
FILEGROUP MyDB_FG1
  ( NAME = 'MyDB_FG1_Dat1',
   FILE NAME =
      'c:/Program Files/Microsoft SQL Server/MSSQL/data/MyDB_FG1_1.ndf',
   SIZE = 1MB,
   MAXSIZE=10,
   FILEGROWTH=1),
  ( NAME = 'MyDB_FG1_Dat2',
   FILE NAME =
      'c:/Program Files/Microsoft SQL Server/MSSQL/data/MyDB_FG1_2.ndf',
   SIZE = 1MB,
   MAXSIZE=10,
   FILEGROWTH=1)
LOG ON
  ( NAME='MyDB_log',
   FILE NAME =
      'c:/Program Files/Microsoft SQL Server/MSSQL/data/MyDB.ldf',
   SIZE=1,
   MAXSIZE=10,
   FILEGROWTH=1)
GO
ALTER DATABASE MyDB 
MODIFY FILEGROUP MyDB_FG1 DEFAULT
GO

-- Create a table in the user-defined filegroup.
USE MyDB
CREATE TABLE MyTable
  ( cola      int   PRIMARY KEY,
   colb      char(8) )
ON MyDB_FG1
GO

可以將用戶文件組設成只讀,數據不能更改,但可以修改目錄以執行權限管理等工作。

SQL Server 2000 數據庫可以從服務器中分離出來,然後重新連接到另一臺服務器或原來的服務器上。這對製作要分發的、以便用於在客戶的本地 SQL Server 安裝上使用的數據庫特別有用。例如,公司可以創建包含其當前產品目錄的數據庫。公司可以在可寫的光盤驅動器上創建這個數據庫,並將它設成只讀。然後,他們可以複製這張光盤,給那些在 Windows 95 便攜式電腦上安裝了目錄應用程序和 SQL Server 的地區銷售代表發送複本。這樣一來,銷售代表就有了最新的產品目錄信息。

 

 

也可以通過文件和文件組對數據庫進行備份或還原,以保證數據的安全性。

發佈了41 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章