SqlServer系統(tǒng)數(shù)據(jù)庫的作用
系統(tǒng)數(shù)據(jù)庫
Sql Server的系統(tǒng)數(shù)據(jù)庫分為:master、model、msdb和tempdb,這四個(gè)數(shù)據(jù)庫在SQL Server中各司其職,作為研發(fā)人員,很有必要了解這幾個(gè)數(shù)據(jù)庫的職責(zé),下面我們來看看這幾個(gè)數(shù)據(jù)庫的作用。
1. Master 數(shù)據(jù)庫
Master 數(shù)據(jù)庫記錄SQLServer 系統(tǒng)的所有系統(tǒng)級(jí)別信息(表sysobjects)。他記錄所有的登錄賬號(hào)(表sysusers)和系統(tǒng)配置。Master數(shù)據(jù)庫是這樣一個(gè)數(shù)據(jù)庫,他記錄所有其他的數(shù)據(jù)庫(表sysdatabases),包括數(shù)據(jù)庫文件的位置。Master 數(shù)據(jù)庫記錄SQLServer的初始化信息,他始終指向一個(gè)可用的最新 Master 數(shù)據(jù)庫備份。
2. Model 數(shù)據(jù)庫
Model 數(shù)據(jù)庫是作為在系統(tǒng)上創(chuàng)建數(shù)據(jù)庫的模板。當(dāng)系統(tǒng)收到“Create DATABASE” 命令時(shí),新創(chuàng)建的數(shù)據(jù)庫的第一部分內(nèi)容從Model 數(shù)據(jù)庫復(fù)制過來,剩余部分由空頁填充,所以SQL Server數(shù)據(jù)中必須有Mode 數(shù)據(jù)庫。
3. Msdb 數(shù)據(jù)庫
Msdb 數(shù)據(jù)庫供 SQLServer 代理程序調(diào)度警報(bào)和作業(yè)以及記錄操作員時(shí)使用。比如,我們備份了一個(gè)數(shù)據(jù)庫,會(huì)在表backupfile中插入一條記錄,以記錄相關(guān)的備份信息。
4. Tempdb 數(shù)據(jù)庫
Tempdb 數(shù)據(jù)庫保存系統(tǒng)運(yùn)行過程中產(chǎn)生的臨時(shí)表和存儲(chǔ)過程。當(dāng)然,它還滿足其他的臨時(shí)存儲(chǔ)要求,比如保存SQL Server生成的存儲(chǔ)表等。Tempdb 數(shù)據(jù)庫是一個(gè)全局咨詢,任何連接到系統(tǒng)的用戶都可以在該數(shù)據(jù)庫中產(chǎn)生臨時(shí)表和存儲(chǔ)過程。Tempdb 數(shù)據(jù)庫在每次SQL Server啟動(dòng)的時(shí)候,都會(huì)清空該數(shù)據(jù)庫中的內(nèi)容,所以每次啟動(dòng)SQL Server后,該表都是干凈的。臨時(shí)表和存儲(chǔ)過程在連接斷開后會(huì)自動(dòng)除去,而且當(dāng)系統(tǒng)關(guān)閉后不會(huì)有任何活動(dòng)連接,因此,tempdb 數(shù)據(jù)庫中沒有任何內(nèi)容會(huì)從SQL Server的一個(gè)會(huì)話保存到另外一個(gè)會(huì)話中。
默認(rèn)情況下,在 SQL Server 在運(yùn)行時(shí) tempdb 數(shù)據(jù)庫會(huì)根據(jù)需要自動(dòng)增長。不過,與其它數(shù)據(jù)庫不同,每次啟動(dòng)數(shù)據(jù)庫引擎時(shí),它會(huì)重置為其初始大小。如果為 tempdb 數(shù)據(jù)庫定義的大小較小,則每次重新啟動(dòng) SQL Server時(shí),將tempdb 數(shù)據(jù)庫的大小自動(dòng)增加到支持工作負(fù)荷所需的大小這一工作可能會(huì)成為系統(tǒng)處理負(fù)荷的一部分。為避免這種開銷,可以使用 ALTER DATABASE 增加 tempdb 數(shù)據(jù)庫的大小。