2011-03-11 121 views
0

我們正在使用SQL Server 2005.最近,由於tempdb大小很大,SQL Server 2005在我們的生產環境中崩潰。 1)什麼可能是大tempdb大小的原因? 2)有什麼方法可以查看tempdb中有哪些數據?SQL Server 2005 TempDB大小

+0

增加了一些更相關的標籤。 – 2011-03-11 02:53:06

回答

0

的常用方法長出了SQL Server數據庫—任何數據庫,而不僅僅是tempdb —是有它的數據和日誌設置爲自動增長的文件(尤其是日誌文件)。 SQL Server非常高興地增長日誌和數據文件,直到消耗所有可用的磁盤空間。

最佳做法,恕我直言,是爲了讓上的數據文件自動增長有限(穿上它有多大可以生長的上限),並修復日誌文件的大小。您可能需要做一些分析來確定日誌文件需要多大。對於tempdb,尤其是,恢復模式也應該設置爲簡單。

+0

通常的方式(非專業環境< - 這是你忘了)。我不知道任何大/重要的數據庫服務器管理員只是讓事情自動增長。但是,後來,我每天處理1000 + gb數據庫,數據庫數量達數億行。 – TomTom 2011-03-11 05:52:41

+0

也許你沒有讀到我說的話:他的數據庫吞噬他硬盤的原因是因爲它保留在默認(自動增長)配置中。餿主意。 – 2011-03-11 19:08:53

0

好tempdb是一個有點特殊的數據庫。在這裏創建你在程序中使用的任何臨時對象。因此,如果應用程序在查詢中使用了大量臨時表,它們將全部駐留在此處,但在連接(spid)重置後它們應該自行清理。

能長出tempdb的另一件事是數據庫維護任務,但他們將採取更大的通行費上的數據庫日誌文件。

每當您重新啓動SQL服務時,Tempdb也會被清除。它基本上會丟棄數據庫並重新創建它。我同意@Nic關於將tempdb保持原樣,不要與它混淆,tempdb中的任何空間問題,通常表示另一個更大的問題。更多的空間將會掩蓋這個問題,但只會持續很長時間。您的驅動器有多少可用空間,您有tempdb?

其他的東西,如果沒有,嘗試,把tempdb中它自己的驅動器,以及一個更可能的話,有自己獨立的驅動器上的數據和日誌文件。

所以,如果你不重新啓動您的SQL Server /服務,您的驅動器將很快耗盡空間,

0

2)有什麼辦法來看看什麼樣的數據是有在tempdb?

沒有,因爲它不保存在那裏。 Tempdb有非常特殊的處理方式,就像每次服務器重新啓動時一樣。

1)可能是什麼原因,大的tempdb大小?

低效的SQL,維護工作,或只是手頭上的數據。顯然,一個800GB,6000GB的數據庫可能需要比4GB的在線crm嘗試更多的tempdb空間。您絕對不會指定任何尺寸。什麼是大?我在我的小型服務器上安裝了64GB的tempdb數據庫。

是進入臨時數據庫

典型的SQL是:

  • 排序是不可解作爲查詢的一部分(你需要存儲的密鑰某處)
  • DISCTINCT。需要tempdb中的所有返回數據來查找雙打。
  • 在連接期間可能會有某些詩歌。
  • Tempdb用法(臨時表)。我只是提到它們,因爲在加載和清理過程中,我經常保存數百兆字節的數據。

通常情況下,您可以通過在查詢日誌中查找統計信息來查找這些查詢,或者只是簡單地查詢。

也就是說,維護計劃也在那裏,但有理由。最後,你的「大」可能是我的「甚至不值得一提的小」。這真的取決於你做什麼。使用查詢跟蹤工具來查找需要很長時間。

物理Tempdb是非常特殊的治療 - sql服務器不會寫入文件,如果它不必(即保持內存thigh)。寫入光盤是內存流動的標誌。這與正常的db寫入行爲不同。 Tempdb,如果它流過,最好放在一個體面快的SSD上......它通常不會太貴,因爲它仍然會相對較小。

在此處使用查詢來查找有關tempdb的其他查詢 - 基本上,您在這裏的髒水中釣魚,需要嘗試一些東西,直到找到罪魁禍首。

0

使用tempdb

選擇(尺寸* 8)FileSizeKB從sys.database_files中