我們的新組織中有一個60 GB的生產數據庫。我們在這個數據庫中隔了近500個報告。我注意到所有報告腳本都在TempDB
中創建表格,然後填充最終報告。 TempDB
大小是6 GB。這些報告腳本沒有設置依賴項,這些腳本是從PowerShell調用的。TempDB用法SQL Server 2012
以這種方式廣泛使用TempDB
是否是一種好習慣?或者,在生產數據庫本身中創建所有臨時表並在生成報告後放下它們會更好嗎?
感謝, Roopesh
我們的新組織中有一個60 GB的生產數據庫。我們在這個數據庫中隔了近500個報告。我注意到所有報告腳本都在TempDB
中創建表格,然後填充最終報告。 TempDB
大小是6 GB。這些報告腳本沒有設置依賴項,這些腳本是從PowerShell調用的。TempDB用法SQL Server 2012
以這種方式廣泛使用TempDB
是否是一種好習慣?或者,在生產數據庫本身中創建所有臨時表並在生成報告後放下它們會更好嗎?
感謝, Roopesh
臨時表總是被在tempdb中創建。但是,TempDb的大小不一定只是由於臨時表。 tempdb的用於以各種方式
因此,很顯然它在各種SQL操作中使用,因此也可能由於其他原因而增大大小。但是,對於您的情況,如果您的TempDb有足夠的空間來正常運行,並且您的內部進程正在使用TempDb創建臨時表並且這不是問題。您可以將TempDb視爲SQL Server的廁所。
您可以檢查是什麼原因造成的tempdb到,如果上面的查詢顯示與擴大其規模低於查詢
SELECT
SUM (user_object_reserved_page_count)*8 as usr_obj_kb,
SUM (internal_object_reserved_page_count)*8 as internal_obj_kb,
SUM (version_store_reserved_page_count)*8 as version_store_kb,
SUM (unallocated_extent_page_count)*8 as freespace_kb,
SUM (mixed_extent_page_count)*8 as mixedextent_kb
FROM sys.dm_db_file_space_usage
,
可以監視通過上面的腳本tempdb中,並首先確定其增長的真正原因。但是,60 GB是相當小的數據庫,6GB的TempDB大小是相當可接受的。
上述答案的一部分從我的other answer中複製而來。
使用tempdb沒有錯(明確地)。通常tempdb是隱式使用的(即在你的控制之外)。 –