楊銘
摘 要: Sql Server為用戶提供了多個系統數據庫,它們在數據庫中都扮演著重要的角色。Sql Server數據庫在邏輯上被組織成一個個數據對象,如表、視圖、角色等,邏輯對象可被用戶查看或操作;在物理上卻是以文件的形式存放在磁盤中。本文介紹了Sql Server的系統數據庫及數據庫的邏輯結構和物理結構。
關鍵詞: Sql Server 邏輯結構 數據文件 物理結構
一、系統數據庫
在SQL Server系統中,數據庫可分為“系統數據庫”和“用戶數據庫”兩大類。用戶數據庫是用戶根據實際需要創建的數據庫,而系統數據庫則是SQL Server內置的,它們主要是用于系統管理。SQL Server中系統數據庫主要有以下幾個:
1.master數據庫
master數據庫是最重要的系統數據庫,它記錄SQL Server系統級的信息,包括系統中所有的系統配置信息、登錄賬號、所有數據庫的信息、所有用戶數據庫的主文件地址、SQL server的初始化信息。因此,如果master數據庫不可用,則SQL Server將無法啟動。
2.tempdb數據庫
tempdb數據庫用于存放所有連接到系統的用戶臨時表和臨時存儲過程,以及SQL Server產生的其他臨時性的對象。tempdb是SQL Server中負擔最重的數據庫,因為幾乎所有的查詢都可能需要使用它。
在SQL Server關閉時,tempdb數據庫中的所有對象都被刪除,每次啟動SQL Server時,tempdb數據庫里面總是空的。
默認情況下,SQL Server在運行時tempdb數據庫會根據需要自動增長。不過,與其他數據庫不同,每次啟動數據庫引擎時,它會重置為其初始大小。
3.model數據庫
model數據庫又叫做模板數據庫,它是系統所有數據庫的模板,這個數據庫相當于一個模子,所有在系統中創建的新數據庫的內容,在剛創建時都和model數據庫完全一樣。
如果SQL Server專門用作一類應用,而這類應用都需要某個表,甚至在這個表中都要包括同樣的數據,那么就可以在model數據庫中創建這樣的表,并向表中添加那些公共的數據,以后每一個新創建的數據庫中都會自動包含這個表和這些數據。當然,也可以在model數據庫中增加其他數據庫對象,這些對象都能被以后創建的數據庫所繼承。
4.msdb數據庫
msdb數據庫由SQL Server代理(SQL Server Agent)安排報警、作業,并記錄操作員。
二、數據庫的物理結構
數據庫的物理表現是操作系統文件,即在物理上,一個數據庫由一個或多個磁盤上的文件組成。
1.數據文件
在SQL Server系統中,一個數據庫在磁盤上可以保存為一個或多個文件,我們把這些文件稱為數據庫文件。數據庫文件分成三類:主數據文件、次數據文件、事務日志文件。這種物理結構只對數據庫管理員是可見的,而對用戶是透明的。
(1)主數據庫文件
主數據庫文件包含數據庫啟動信息,并指向數據庫中的其他文件。用戶數據庫和對象可存儲在該文件中。每個數據庫只能有一個主數據庫文件,文件擴展名為.mdf。
(2)次數據庫文件
次數據庫文件是可選的,次數據庫文件可用于將數據庫分散存儲到多個磁盤中,每個數據庫可以有零個或多個次數據庫文件,次數據庫文件擴展名為.ndf。
(3)事務日志文件
事務日志文件用于記錄對數據庫的各種操作情況,對數據庫進行操作時,對數據庫內容的更改將自動記錄到該文件中。事務日志文件的擴展名為.ldf,一個數據庫可以有一個或多個事務日志文件。
因此,一個數據庫至少由兩個文件組成個,即一個主數據庫文件和一個事務日志文件。
2.數據庫文件組
為了方便管理,可以將多個數據文件組織成為一組,稱為文件組。每個文件組對應一個組名,可以將文件組中的文件存放在不同磁盤,以便提高數據庫的訪問性能。
在SQL Server中,文件組有兩種類型。
(1)主文件組
主數據文件所在的組稱為主文件組。在創建數據庫時,如果用戶沒有定義文件組,系統會自動建立主文件組。當數據文件沒有指定文件組時,默認都在主文件組中。
(2)次文件組
用戶定義的文件組稱為次文件組。如果次文件組中的文件被填滿,那么只有該文件組中的用戶表會受到影響。
在創建表時,不能指定將表放在某個文件中,只能指定將表放在某個文件組中。因此,如果希望將某個表放在特定的文件中,必須通過創建文件組實現。
3.數據庫文件和文件組遵循的規則
(1)一個文件或文件組只能被一個數據庫使用。
(2)一個文件只能屬于一個文件組。
(3)事務日志文件不能屬于文件組。
三、數據庫的邏輯結構
邏輯上,一個數據庫由若干個用戶可視的對象構成,如表、視圖、角色等,這些組件稱為數據庫對象。用戶利用這些邏輯數據庫的數據庫對象存儲或讀取數據庫中的數據,直接或間接地利用這些對象在不同應用程序中完成存儲、操作和檢索等工作。邏輯數據庫的數據庫對象可以從數據庫服務器管理平臺中查看。
參考文獻:
[1]譚嶠.SQL Server數據庫性能優化研究[J].硅谷,2014(08).
[2]林元彥.SQL Server數據庫性能分析與優化[J].電子技術與軟件工程,2013(17).
[3]馮艷.SQL Server數據庫運用及其性能優化分析[J].軟件導刊,2012(03).