溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

收縮 tempdb 數(shù)據(jù)庫(kù)

發(fā)布時(shí)間:2020-07-30 00:25:56 來源:網(wǎng)絡(luò) 閱讀:8898 作者:jimshu 欄目:數(shù)據(jù)庫(kù)

客戶需求:

這是一個(gè)生產(chǎn)環(huán)境,在夜深人靜的時(shí)候發(fā)現(xiàn) tempdb 已經(jīng)超過500GB。


需求分析:

我們知道,如果重啟 SQL Server,tempdb 會(huì)自動(dòng)重新創(chuàng)建,從而使 tempdb 回歸到初始大小。但是這是生產(chǎn)環(huán)境,不允許重啟 SQL Server。


嘗試:

直接收縮 tempdb,始終不成功。

USE [tempdb]
GO

DBCC SHRINKFILE (N'tempdev' , 0, TRUNCATEONLY)  --釋放所有可用空間
GO

DBCC SHRINKFILE (N'tempdev' , 500) -- 收縮到 500MB

GO


解決方案:

SQL Server 2005 及后續(xù)版本為了增強(qiáng) tempdb 的性能,會(huì)緩存一些 IAM 頁(yè),以備將來重新使用這些頁(yè)面。在這種情況下,必須首先釋放 IAM 頁(yè),才能釋放其對(duì)應(yīng)的頁(yè)面。因此,通過 DBCC FREESYSTEMCACHE,從所有緩存中釋放所有未使用的緩存條目,然后再收縮 tempdb 。

USE [tempdb]
GO

DBCC FREESYSTEMCACHE ('ALL')

GO

DBCC SHRINKFILE (N'tempdev' , 500)

GO


終于收縮到 500 MB。成功!



關(guān)于 DBCC FREESYSTEMCACHE,請(qǐng)參考 https://technet.microsoft.com/zh-cn/library/ms178529.aspx

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI