這些天什么都沒做。年前似乎有忙不完的事,年后了卻又有了好逸的毛病。。。。
今天才開始看學校實驗指導的數據庫開發實例。以前一直沒有時間來看。。。
創建表的語句中,最后總來一句on[primary],這是什么意思?
翻翻聯機叢書。在CREATE TABLE的語法下似乎沒有找到。硬著頭皮看下去,終于明白了一些。
寫出來吧。侯捷老師說,發表是最好的記憶。:)
在CREATE TABLE的語法中有這樣一句可選語法項目:
[ ON { filegroup | DEFAULT } ]
用來指定存儲表的文件組。
如果指定 filegroup,則表將存儲在指定的文件組中。數據庫中必須存在該文件組。如果指定 DEFAULT,或者根本未指定 ON 參數,則表存儲在默認文件組中。
(DEFAULT 并不是關鍵字。DEFAULT 是默認文件組的標識符并需對其進行定界,如 ON "DEFAULT"、ON [DEFAULT]。)
ON [PRIMARY]是表示表是建立在主文件組上。PRIMARY表示主文件組。如果沒有指定默認文件組,則主文件組是默認文件組,ON [PRIMARY]也可以省略掉了。
由數據庫說開來。Microsoft? SQL Server? 2000 使用一組操作系統文件映射數據庫,也可以說將數據庫映射到一組操作系統文件上(看你怎么理解了)。數據庫中的所有數據和對象(如表、存儲過程、觸發器和視圖)都存儲在操作系統文件(數據庫文件):主要數據文件 、次要數據文件 和事務日志 文件中。
1.主要數據文件
該文件包含數據庫的啟動信息,并用于存儲數據。是數據庫的起點,指向數據庫中文件的其它部分。每個數據庫都有一個主要數據文件。主要數據文件的推薦文件擴展名是 .mdf。
2.次要數據文件
這些文件含有不能置于主要數據文件中的所有數據即包含除主要數據文件外的所有數據文件。有些數據庫可能沒有次要數據文件,而有些數據庫則有多個次要數據文件。(如果主文件可以包含數據庫中的所有數據,那么數據庫就不需要次要數據文件。有些數據庫可能足夠大故需要多個次要數據文件,或使用位于不同磁盤驅動器上的輔助文件將數據擴展到多個磁盤。)次要數據文件的推薦文件擴展名是 .ndf。
3.事務日志文件
該數據庫的日志信息。每個數據庫都必須至少有一個日志文件。日志文件的推薦文件擴展名是 .ldf。
文件組
出于分配和管理目的,可以將數據庫文件分成不同的文件組。文件組是SQL Server 2000數據文件的一種邏輯管理單位。SQL Server中一個或多個文件的命名集合,它構成分配或用于數據庫管理的單個單元。在首次建數據庫,或者以后將更多文件添加到數據庫時,可以創建文件組。文件組不能獨立于數據庫文件創建。文件組是在數據庫中對文件進行分組的一種管理機制。
有兩種類型的文件組:主要文件組和用戶定義文件組。(可以說,數據庫由一個主文件組和任意用戶定義的文件組組成。)
1.主文件組 (PRIMARY)
用戶定義文件組 默認文件組 同為文件組的一種類型。
其包含主要數據文件和任何沒有明確指派給其它文件組的其它文件。系統表的所有頁均分配在主文件組.
2.用戶定義文件組
用戶定義文件組是在 CREATE DATABASE 或 ALTER DATABASE 語句中,使用 FILEGROUP 關鍵字或在 SQL Server 企業管理器內的"屬性"對話框指定的文件組。
另:默認文件組 (DEFAULT 文件組)
文件組的一種類型,其包含在創建時沒有指定文件組的所有表和索引的頁。在每個數據庫中,每次只能有一個文件組是默認文件組。如果沒有指定默認文件組,則默認文件組是主文件組。 可用 ALTER DATABASE 語句更改默認文件組。通過更改默認文件組,創建時沒有指定文件組的任何對象都被分配到新默認文件組中的數據文件。然而,系統對象和表仍然保留在 PRIMARY 文件組內,而不是新默認文件組。(每個數據庫中都有一個文件組作為默認文件組運行。當 SQL Server 給創建時沒有為其指定文件組的表或索引分配頁時,將從默認文件組中進行分配。一次只能有一個文件組作為默認文件組。db_owner 固定數據庫角色成員可以將默認文件組從一個文件組切換到另一個。如果沒有指定默認文件組,則主文件組是默認文件組。)
注:SQL Server 2000 在沒有文件組時也能有效地工作,因此許多系統不需要指定用戶定義文件組。在這種情況下,所有文件都包含在主文件組中,而且 SQL Server 2000 可以在數據庫內的任何位置分配數據。文件組不是在多個驅動器之間分配 I/O 的唯一方法。
附:
. 為什么要建立文件組
建立文件組有兩個目的。
q 一是可以更好地分配和管理存儲空間,通過控制在特定磁盤驅動器上放置數據和索引來提高數據庫的性能。
q 二是由于操作系統對物理文件的大小進行了限制,所以當某個磁盤上的數據文件超過單個文件允許的最大值時,可以使用文件組中存
貯在其他驅動器上的數據文件繼續擴充存儲空間。
. 數據文件和文件組的使用規則
SQL Server 2000中的數據文件和文件組的使用規則包括:
q 數據文件或文件組不能由一個以上的數據庫使用。
q 數據文件只能是一個文件組的成員。
q 數據文件和日志文件不能屬于同一文件或文件組。
q 日志文件不能屬于任何文件組。
q 只有文件組中的所有數據文件都沒有空間了,文件組的文件才會自動增長。
. 文件組的工作原理
文件組對組內的所有文件都使用按比例填充策略。當將數據寫入文件組時,SQL Server 2000根據文件中的可用空間量將一定比例的數據寫入文
件組的每個文件,而不是將所有的數據先寫滿第一個文件,接著再寫入下一個文件。例如,如果文件1有100MB的可用空間,文件2有200MB的可
用空間,則從文件1中分配一個盤區,從文件2中分配兩個盤區,依此類推。這樣,兩個文件幾乎同時填滿。
一旦文件組內的所有文件已滿,SQL Server 2000就自動地采用循環方式一次擴展一個文件,以容納更多的數據(假定數據庫設置為自動增長)
。例如,某個文件組由3個文件組成,它們都設置為自動增長。當文件組中的所有文件的空間用完時,只擴展第一個文件。當第一個文件已滿,
不能將更多的數據寫入該文件組時,擴展第二個文件。當第二個文件已滿,不能將更多的數據寫入該文件組時,擴展第3個文件。如果第3個文
件已滿,不能將更多的數據寫入該文件組,那么再次擴展第一個文件,以此類推。
正時由于文件組的這種特性,允許跨多個磁盤、多個磁盤控制器或 RAID(廉價磁盤冗余陣列)系統創建數據庫,可提高數據庫性能。例如,如
果計算機中有4個磁盤,那么可以創建一個由3個數據文件和一個日志文件組成的數據庫,每個磁盤上放置一個文件。在對數據進行訪問時,四
個讀/寫磁頭可以同時并行地訪問數據,從而加速數據庫操作。
另外,文件和文件組允許數據布局,可以在特定的文件組中創建表。因為特定表的所有輸入/輸出都可以定向到特定的磁盤,所以性能得以改善
。例如,可以將最常用的表放在一個文件組中的一個文件中,該文件組位于一個磁盤上;而將數據庫中其它的不常訪問的表放在另一個文件組
中的其它文件中,該文件組位于第二個磁盤上。
. 如何使用文件組的建議
q 大多數數據庫在只有單個數據文件和單個事務日志文件的情況下可以很好地運行。
q 如果使用多個文件,請為附加文件創建第二個文件組,并將其設置為默認文件組。這樣,主文件將僅包含系統表和對象。
q 若要獲得最佳性能,請在盡可能多的可用本地物理磁盤上創建文件或文件組,并將爭奪空間最激烈的對象置于不同的文件組中。
q 使用文件組以允許將對象放置在特定的物理磁盤上。
q 將在同一聯接查詢中使用的不同表置于不同的文件組中。由于采用并行磁盤輸入/輸出對聯接數據進行搜索,所以性能將得以改善。
q 將最常訪問的表和屬于這些表的非聚集索引置于不同的文件組上。如果文件位于不同的物理磁盤上,由于采用并行輸入/輸出,所以
性能得以提高。
q 不要將日志文件與其它文件和文件組置于同一物理磁盤上。