關於SQLServer的tempdb的資料檔案暴增問題(1)
問題表現:
tempdb的資料檔案暴增,無法收縮。
檢視tempdb用在哪裡?
監視tempdb磁碟空間:
如何確定 tempdb 中的可用空間量,以及如何確定版本儲存區、內部物件和使用者物件使用的空間量。
確定 tempdb 中的可用空間量
下面的查詢將返回 tempdb 中所有檔案的總可用頁數和總可用空間量 (MB)。
SELECT SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
確定版本儲存區使用的空間量
下面的查詢將返回 tempdb 中版本儲存區使用的總頁數和總空間量 (MB)。
SELECT SUM(version_store_reserved_page_count) AS [version store pages used],
(SUM(version_store_reserved_page_count)*1.0/128) AS [version store space in MB]
FROM sys.dm_db_file_space_usage;
確定執行時間最長的事務
如果版本儲存區使用了 tempdb 中的大量空間,則必須確定執行時間最長的事務。使用下面的查詢可按順序(事務的最長執行時間)列出活動事務。
SELECT transaction_id
FROM sys.dm_tran_active_snapshot_database_transactions
ORDER BY elapsed_time_seconds DESC;
與聯機索引操作無關的長時間執行的事務需要很大的版本儲存區。此版本儲存區儲存自事務啟動以來生成的所有版本。聯機索引生成事務可能需要較長時間才能完成,但是使用了專用於聯機索引操作的單獨的版本儲存區。因此,這些操作不會防止刪除其他事務的版本。有關詳細資訊,請參閱行版本控制資源的使用情況。
確定內部物件使用的空間量
下面的查詢將返回 tempdb 中內部物件使用的總頁數和總空間量 (MB)。
SELECT SUM(internal_object_reserved_page_count) AS [internal object pages used],
(SUM(internal_object_reserved_page_count)*1.0/128) AS [internal object space in MB]
FROM sys.dm_db_file_space_usage;
確定使用者物件使用的空間量
下面的查詢將返回 tempdb 中使用者物件使用的總頁數和總空間量。
SELECT SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;
確定總空間量(可用空間和已用空間)
下面的查詢將返回 tempdb 中所有檔案使用的磁碟空間總量。
SELECT SUM(size)*1.0/128 AS [size in MB]
FROM tempdb.sys.database_files
SQL:
select
sm.sysno sosysno
,sm.orderdate
,replace(replace(replace(replace((ar.ProvinceName + ar.CityName + ar.DistrictName + sm.ReceiveAddress),char(10),''),char(13),''),char(9),''),',','') address
,ar.CityName city
from master sm
left join Area as ar
on ar.SysNo = sm.ReceiveAreaSysNo
where 1=1
and convert(varchar(10),sm.orderdate,111) between convert(varchar(10),getdate()-1,111) and convert(varchar(10),getdate()-1,111)
and sm.ordertype <>5
and replace(replace(replace(replace((ar.ProvinceName + ar.CityName + ar.DistrictName + sm.ReceiveAddress),char(10),''),char(13),''),char(9),''),',','') is not null
確定問題是行版本控制導致了tempdb的佔用。事務持有未釋放長達522696秒。
抓到那句SQL。殺掉會話。tempdb空間釋放。
可以進行tempdb的空間收縮了。
PS:查詢當前資料庫tempdb在 使用者物件和 內部物件的使用量:
SELECT top 10 t1.session_id,
t1.internal_objects_alloc_page_count, t1.user_objects_alloc_page_count,
t1.internal_objects_dealloc_page_count , t1.user_objects_dealloc_page_count,
t3.login_name,t3.status,t3.total_elapsed_time
from sys.dm_db_session_space_usage t1
inner join sys.dm_exec_sessions as t3
on t1.session_id = t3.session_id
where (t1.internal_objects_alloc_page_count>0
or t1.user_objects_alloc_page_count >0
or t1.internal_objects_dealloc_page_count>0
or t1.user_objects_dealloc_page_count>0)
order by t1.internal_objects_alloc_page_count desc
internal_objects_alloc_page_count:內部物件使用量
user_objects_alloc_page_count:使用者物件使用量
internal_objects_dealloc_page_count:內部物件釋放量
user_objects_dealloc_page_count:使用者物件釋放量
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2746709/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tempdb資料檔案暴增分析
- tempdb日誌檔案暴增分析
- SQLServer的tempdb暴增導致磁碟消耗的處理方案SQLServer
- Sqlserver關於tempdb臨時資料庫最優檔案個數的最優實踐SQLServer資料庫
- Sqlserver沒有單獨的undo檔案,使用tempdb和redo log來存放undo資料SQLServer
- sqlserver關於filestream檔案流、filetable檔案表的總結SQLServer
- 關於QT的標頭檔案相互包含的問題QT
- MySql資料庫ibtmp1檔案增長問題處理記錄MySql資料庫
- 關於FileDownloader檔案長度校驗的問題
- SQLServer行版本資訊吃資料庫tempdb空間SQLServer資料庫
- 關於檔案上傳下載的編碼問題
- SQLServer移動資料檔案SQLServer
- 關於SqlServer資料表操作SQLServer
- sqlserver收縮資料庫、收縮資料檔案的操作SQLServer資料庫
- 關於dataWithContentsOfFile 讀取大檔案的記憶體問題記憶體
- Sqlserver關於備份報錯提示某個資料檔案不線上it is not online的解決方法SQLServer
- 4.3.2.3 關於PDB$SEED資料檔案的屬性
- Sqlserver關於TDE透明資料加密的使用總結SQLServer加密
- 《高併發下的.NET》第2季 -《memcached連線暴增案》第1集:問題表現
- 關於oracle資料庫訊號量的問題Oracle資料庫
- 檢視歸檔暴增的原因
- 關於Docx動態控制word模板檔案的資料
- 關於idea部署本地專案的問題Idea
- 關於lnmp配置laravel專案的問題?LNMPLaravel
- 關於Android檔案數過大,分包問題的解決辦法Android
- MongoDB與MMAPV1相關的資料檔案簡述MongoDB
- 關於回覆資料後,登入不上的問題
- 關於 SAP HANA 資料庫的死鎖問題(deadlock)資料庫
- 2.5.10.2 關於資料庫時區檔案資料庫
- Sqlserver資料庫使用 .bak 檔案還原資料庫SQLServer資料庫
- [Python3] 關於Bytes與String 寫檔案遇到的編碼問題Python
- 關於onethink 目錄,檔案讀寫檢測函式中的問題函式
- 做資料庫分離讀寫時,sqlServer資料庫資料同步的問題:資料庫SQLServer
- 關於一個歸檔問題?
- spring 載入不了jdbc.properties檔案的資料問題SpringJDBC
- 關於this指向的問題
- 關於 iconv 轉碼導致資料丟失的問題
- 談談關於設計資料管理/治理角色的問題