客戶需求:
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網(wǎng)站、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的碑林網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
這是一個生產(chǎn)環(huán)境,在夜深人靜的時候發(fā)現(xiàn) tempdb 已經(jīng)超過500GB。
需求分析:
我們知道,如果重啟 SQL Server,tempdb 會自動重新創(chuàng)建,從而使 tempdb 回歸到初始大小。但是這是生產(chǎn)環(huán)境,不允許重啟 SQL Server。
嘗試:
直接收縮 tempdb,始終不成功。
USE [tempdb] DBCC SHRINKFILE (N'tempdev' , 0, TRUNCATEONLY) --釋放所有可用空間 DBCC SHRINKFILE (N'tempdev' , 500) -- 收縮到 500MB GO |
解決方案:
SQL Server 2005 及后續(xù)版本為了增強 tempdb 的性能,會緩存一些 IAM 頁,以備將來重新使用這些頁面。在這種情況下,必須首先釋放 IAM 頁,才能釋放其對應的頁面。因此,通過 DBCC FREESYSTEMCACHE,從所有緩存中釋放所有未使用的緩存條目,然后再收縮 tempdb 。
USE [tempdb] DBCC FREESYSTEMCACHE ('ALL') GO DBCC SHRINKFILE (N'tempdev' , 500) GO |
終于收縮到 500 MB。成功!
關于 DBCC FREESYSTEMCACHE,請參考 https://technet.microsoft.com/zh-cn/library/ms178529.aspx