關於tempdb的一些注意事項


    由於數據庫的文件的位置對於I/O性能如此重要,以至於在創建主數據文件的文職時,需要考慮tempdb性能對系統性的影響,因為它是最動態的數據庫,速度還需要最快。

  組成:有主數據文件和日志文件組成。從sql server2005開始添加了許多功能集的支持來創建用戶對象、內部對象或版本。如:觸發器、查詢、快照隔離、多個活動結果集、聯機索引創建、游標、lob參數、臨時表、表變量和表-值函數等等。

   重啟SQL Server,tempdb是唯一恢復為原始默認大小的數據庫(8M),並且將根據使用率的要求繼續增長。增長率一般應該被設為允許文件在兩分鍾內完成增長的數字。

   實時監控tempdb,可用下面的語句查詢到5項執行任務,它們最大限度的使用tempdb:

select top 5 * from sys.dm_db_session_space_usage
order by (user_objects_alloc_page_count+internal_objects_alloc_page_count) desc

   推薦使用下面的查詢來監控tempdb的大小,一般每周運行一次來查詢使用情況,主要顯示:內部對象、空閑空間、版本存儲區和用戶對象使用的空間:

select sum(user_object_reserved_page_count)*8 as 用戶對象,sum(internal_object_reserved_page_count)*8 as 內部對象,
sum(version_store_reserved_page_count)*8 as 版本存儲, sum(unallocated_extent_page_count)*8 as 空閑空間
from sys.dm_db_file_space_usage

查詢結果如圖:

QQ截圖20150607235111

 

配置步驟:

使用之前的查詢和監控,根據我們的使用情況我們可以簡要分成一下幾個步驟來配置tempdb。

1.根據上面的語句來為tempdb來分配預先的空間,同時啟動自增長功能來防止耗盡空間引起SQL Server 停止運行。

2.經驗法則,每個cpu為每個實例創建tempdb數據文件的個數大小都相同,最多8個。

3.確保將tempdb設置為簡單恢復模式。

4.自增長的值一般為初始大小的10%。

5.將tempdb 放在快速、專用的I/O子系統上。

6.使用SQL Server 代理或帶有SQL Knowledge Pack 的MSCOM來創建監控環境的警報,以確保跟蹤1101或1105(數據已滿)。

其中主要監控這幾計數器:SQLServer:Databases:LogFile(s)Size(KB)、SQLServer:Databases:DataFile(s)Size(KB)、SQLServer:Databases:Log File(s)Used(KB)。

7.使用即時數據庫文件初始化。確保將SE_MANAGE_VOLUME_NAME 權限授予服務賬戶。或者使用管理員權限的賬戶運行。

image

另一個很好用的工具是 DMV sys.dm_db_task_space_usage.

總結:

     本篇我們簡單介紹了如何規划設計和預警配置tempdb ,主要理解如何才能不至tempdb空間耗盡引起SQL Server 停止運行,同時如何配置使的性能得到更大提高。最后需要注意的是,警報任務完成后計數器重新定為0,另外還應該監控磁盤計數器Avg.Sec/Read和Avg.Sec/Write,小於10ms為很好,10-20ms為及格,20-50ms是緩慢,需要注意,大於50ms處於嚴重的IO瓶頸。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM