關於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,session_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空間釋放。
SELECT transaction_id,session_id
FROM sys.dm_tran_active_snapshot_database_transactions
ORDER BY elapsed_time_seconds DESC;
可以進行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
- 如何解決tempdb 增長過大的問題
- 關於資料表結構sql檔案匯入mysql資料庫的問題?MySql資料庫
- 關於SAX解析xml檔案的問題XML
- 關於解壓zip檔案的問題
- 關於資料共享的問題
- [20161108]關於資料檔案的問題.txt
- sqlserver關於filestream檔案流、filetable檔案表的總結SQLServer
- 關於oracle檔案許可權的問題Oracle
- 關於檔案上傳的問題smartUpload
- 關於配置檔案中的預設值的問題
- 關於QT的標頭檔案相互包含的問題QT
- MySql資料庫ibtmp1檔案增長問題處理記錄MySql資料庫
- 關於SQLServer中的字元儲存的問題的測試SQLServer字元
- 關於海量資料的獲取問題
- 關於讀取資料庫配置資原始檔問題資料庫
- oracle 關於-資料檔案Oracle
- SQLServer行版本資訊吃資料庫tempdb空間SQLServer資料庫
- 關於SqlServer資料表操作SQLServer
- 請問,關於資料庫連線的問題。資料庫
- 有關*.properties檔案的問題
- 關於檔案上傳下載的編碼問題
- 關於FileDownloader檔案長度校驗的問題
- 關於 Xcode 9 拖入檔案未生效的問題XCode
- 請教高手關於解析xml檔案的問題 急~~XML
- 還原sqlserver資料庫備份檔案.bak的檔案SQLServer資料庫
- 關於收縮資料檔案的嘗試
- SQLServer移動資料檔案SQLServer
- SQLserver 監控資料檔案SQLServer
- 關於刪除資料的快慢問題的分析
- 求救:關於讀取excel資料的問題Excel
- 關於資料庫和jdbc的問題,指教資料庫JDBC
- 關於資料倉儲和OLAP的問題!
- 關於資料庫緩衝池的問題資料庫