国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

如何對SQL Server中的tempdb“減肥”

2024-08-31 01:05:36
字體:
來源:轉載
供稿:網友

SQL Server會自動創建一個名為tempdb的數據庫作為工作空間使用,當您在存儲過程中創建一個臨時表格時,比如(CREATE TABLE #MyTemp),無論您正在使用哪個數據庫,SQL數據庫引擎都會將這個表格創建在tempdb數據庫中。

而且,當您對大型的結果集進行排序,比如使用ORDER BY或GROUP BY或UNION或執行一個嵌套的SELECT時,如果數據量超過了系統內存容量,SQL數據庫引擎就會在tempdb中創建工作表格。在您運行DBCC REINDEX或者向現有的表格中添加集群序列時, SQL數據庫引擎同樣會使用tempdb。實際上,任何針對大型表格的ALTER TABLE命令都會在tempdb中吃掉大量的磁盤空間。

在理想狀態下,SQL會在完成指定操作后自動清理,并銷毀這些臨時表格,但是,很多問題都會導致錯誤。比如,您的代碼創建了一個事務,但是卻沒能執行或重新運行,那么這些孤兒對象將遺留在tempdb中。而且,對大型數據庫運行DBCC CHECK時,它還會消耗掉大量的空間,您往往會發現tempdb比設想的要大很多,甚至還會收到SQL即將用完磁盤空間的出錯信息。

您有很多方法可以來修正這一情況,但從長遠看來,您需要執行其它的步驟來保證正常使用。

為tempdb“減肥”最簡單的辦法就是關閉SQL數據庫引擎然后重新啟動,但是在重要的任務中,這樣做可能難度很大;另一方面,如果您已經處于無法承受的狀態,那么我的建議就是將這個壞消息告知您的上司,然后開始操作。

如果您幸運擁有另外一塊磁盤可以用來放置tempdb,可以進行如下的操作:

USE master

GO

ALTER DATABASE tempdb modify file (name = tempdev, filename ='NewDrive:Pathtempdb.mdf')

GO

ALTER DATABASE tempdb modify file (name = templog, filename ='NewDrive:Pathtemplog.ldf')

GO

還有三項關于tempdb的屬性應該檢查:自動增長標記,初始大小和恢復模式,以下是關于這些屬性的小竅門:

自動增長標記:記住將這個標記設為True。

初始大小:tempdb的初始大小要根據常用的工作負載來設定,如果有很多用戶在使用GROUP BY、ORDER BY或者對大型表格進行聚合操作,那么您的常用工作負載會相當大。如果服務器脫機時,您可能需要檢查日志文件與數據文件是否位于同一磁盤,如果這樣的話,應當將需要將它們轉移到新的磁盤上,您只需指明相應的數據庫并使用相同的命令即可。

恢復模式:將恢復模式設定為True意味著讓SQL自動截去tempdb的日志文件(在使用了每個表格之后),要找出tempdb所使用的恢復模式,可以使用如下命令:

SELECT DATABASEPROPERTYEX('tempdb','recovery')

恢復模式有三種選擇:簡單、完整或大量記錄(bulk-logged),如要改變設置,可以使用以下命令:

ALTER DATABASE tempdb SET RECOVERY SIMPLE

這些步驟可以優化您系統中使用的tempdb,除了解決磁盤空間問題外,您還會發現SQL Server系統性能的提升。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澳门| 常熟市| 姜堰市| 塔城市| 九寨沟县| 车致| 通许县| 绥中县| 南乐县| 桓仁| 体育| 抚宁县| 镇雄县| 江孜县| 灌云县| 阿拉善左旗| 襄汾县| 高阳县| 大连市| 纳雍县| 永福县| 博客| 抚远县| 娄烦县| 太和县| 九台市| 锡林郭勒盟| 吴忠市| 天水市| 淮南市| 常熟市| 鄂伦春自治旗| 余姚市| 敦煌市| 龙海市| 洛扎县| 河间市| 昌乐县| 修水县| 丽江市| 荥经县|