前言 tempdb暴增,造成磁碟空間不足,甚至影響業務運行。 正文 如圖,tempdb log文件從7.40開始突然暴漲,因為 tempdb 0 M到 40G tempdb 所在磁碟是C 盤 C盤的可用空間正好也為40G 在下午16.22左右的時候tempdb 文件暴漲已經影響到業務使用.臨時解決是 ...
前言
tempdb暴增,造成磁碟空間不足,甚至影響業務運行。正文
如圖,tempdb log文件從7.40開始突然暴漲,因為 tempdb 0 M到 40G
tempdb 所在磁碟是C 盤




原因
對應普通的 簡單模式的資料庫無法重用日誌的主要原因是沒有做checkpoint,和存在沒有提交的事務。但對於TEMPDB 來講 他不需要預寫日誌。因為Tempdb 不支持重做(Redo)但需支持回滾(rollback).這也是tempdb日誌存在的原因. 如果一個事務還沒有提交,那它可以在任何時候回滾。SQL Server必須做好這種準備,以便能夠從日誌記錄中找回修改前的數據內容,完成回滾。在SQL Server裡面,所有的日誌記錄都有嚴格順序,中間不可以有任何跳躍。所以如果某個資料庫有沒有提交的事務,SQL Server會標記所有從這個事務開始的日誌記錄(不管和這個事務有沒有關係)為活動事務日誌 。這些日誌記錄都有可能“需要”被用來做回滾。解決
找到語句後,這個語句一直持續運行的原因是,等待ASYNC_NETWORK_IO 這說明,客戶端和資料庫伺服器網路傳輸存在問題或者程式中未接收資料庫傳輸的數據。更多的是後者。問題就提交給開發,檢查代碼,對程式進行優化。補充
查看日誌空間使用的方法: DBCC LOGinfo() 查看vlf的狀態 DBCC SQLPERF(LOGSPACE) 建議用,查看日誌空間的使用 ,更準。

用下麵的語句查:
