tempdb的資料檔案越大,在記憶體中所佔快取就越多

2022-02-14 19:22:59 字數 1254 閱讀 4334

tempdb這個系統資料庫大家都很熟悉,很多新手對tempdb都是不去操作,而使用它的預設配置。

這其實並沒有錯,但是在追求效能之上的情況下,可以考慮對tempdb的配置進行修改。

伺服器配置:

系統:win2008

資料庫:sqlserver2008 r2 

cpu:24核,

記憶體:224gb,其中168gb給資料庫使用,

硬碟:4塊15000轉機械硬碟組成raid5陣列。

伺服器使用情況:

io平均佇列在5以下,高峰值在50左右,但不會持續2分鐘以上,

cpu平均佔用率在15%以下,高峰不超過50%,持續時間不過程30秒,

快取頁面生存週期按天算。

以下是本人執行的乙個指令碼,

在這裡我們可以清晰的發現,tempdb所佔的快取為33695mb。

實際上,大多數伺服器上,tempdb所佔的空間不會超過2gb。這是什麼問題造成的?

由於沒有儲存原有的tempdb的預設配置下,

當時tempdb只有乙個主檔案,有160gb左右,占用100多gb記憶體。

不過大家可以看我以前發布的乙個帖子,這個帖子是我第一次遇到tempdb異常時,做的處理。

後來在黃sir的提醒下,以及我查閱了很多資料,對tempdb進行了處理。

tempdb有6個資料檔案,乙個日誌檔案,每個資料檔案大小為10gb,日誌檔案為5gb。

然後tempdb占用的快取一直保持在20gb左右,最近由於tempdb的檔案再次增長,檔案大小如下:

於是乎,tempdb在記憶體中占用的大小就增加了10gb。

網上大多數對tempdb的設定都是按cpu核數來設定tempdb的檔案個數,

我這裡採用的是24核cpu/6個資料檔案,按4:1的比例來設計的。

從上面的分析,我得出來的結論是:

1、tempdb單個檔案越大,如果記憶體富餘,在記憶體中占用的快取就越大(也有可能是不準確的,因為這僅僅是我接觸乙個場景)

2、tempdb單個檔案越大,如果記憶體剛好或已經出現瓶頸,那麼記憶體中的交換就越頻繁,這會間接造成io佇列上公升。

這是本人遇到的乙個場景,然後根據場景所得出的結論,因為沒有嘗試驗證其它的場景,所以得出的觀念可能很片面,

但我希望能幫助到大家。

mysql 的資料檔案

在mysql 中每乙個 資料庫都會在定義好 或者預設 的資料目錄下存在乙個以資料庫名字命名的資料夾,用來存放該資料庫中各種表資料檔案。1 frm 檔案 與表相關的元資料 meta 資訊都存放在 frm 檔案中,包括表結構的定義資訊等。不論是什麼儲存引擎,每乙個表都會有乙個以表名命名的 frm 檔案。...

mysql 的資料檔案

在mysql 中每乙個資料庫都會在定義好 或者預設 的資料目錄下存在乙個以資料庫名字命名的資料夾,用來存放該資料庫中各種表資料檔案。1 frm 檔案 與表相關的元資料 meta 資訊都存放在 frm 檔案中,包括表結構的定義資訊等。不論是什麼儲存引擎,每乙個表都會有乙個以表名命名的 frm 檔案。2...

CEGUI資料檔案

cegui所用的資料檔案除了少數的特殊情況外都是xml格式的。但是,為了清晰的說明資料檔案代表什麼型別的資源,資料檔案並不是以 xml 作為字尾,而是用更有意義的字尾名。比如,imageset的字尾名是.imageset,font的字尾名是.font,等等。下面將對每種檔案型別做個簡要的說明,以後將...