TEMP空间压缩

​​​​​​查看TEMP空间的几种方法

1.TEMP数据库右键属性 ,可查看数据库初始大小 ,现在大小,可用空间 。

2.使用DMV视图查看 ,sys.master_files 查看初始化大小 , sys.database_files查看当前大小 。

select size/128.0,* from sys.master_files where database_id=2 。其中SIZE的单位为8KB的数据页,除以128单位为MB

select size/128.0 ,*From tempdb.sys.database_files

3.使用系统函数 EXEC sp_helpdb 'tempdb'

数据库收缩

1.Temp数据库数据文件过大后,我们一般会采用收缩数据库

DBCC SHRINKFILE (tempdev, 5);  

如果收缩的数据库大小小于实际大小,数据库会收缩到实际大小 后不能再收缩。

用以下语句查看可收缩的空间

如果有收缩的空间,但是使用 DBCC SHRINKFILE 却扔无法收缩 ,可以考虑先清空缓存 ,再进行收缩。

DBCC FREESYSTEMCACHE('ALL') 

注意此语句会同时清空存储过程执行计划,有可能导致效率下降。

注:2008及以上版本使用DBCC SHRINKFILE 命令会改变数据库初始大小。会将初始大小变为收缩后的大小。

2.重启SQL服务 。 

重启SQL服务,会重新生成TempDB数据库,还原TempDB为初始大小 。 

临时重启了数据库服务器后解决问题。但最主要的还是找到TempDB文件暴增的原因。

如何查询TempDB文件暴增

tempdb数据文件暴增,会导致服务器磁盘空间被耗尽。(所以记得设置maxSize)

1.查看tempdb的使用分配情况

1

2

3

4

5

6

7

8

9

10

11

12

13

14

use tempdb

go

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

  

2.从internal_objects_alloc_page_count和internal_objects_dealloc_page_count可以看出,给session分配了44096页,计算一下:

1

select 44096*8/1024/1024 as [size_GB]

可能是因为时间太久,已经找不到导致暴增的会话。

3.如果产生问题的会话还存在的话,可以根据会话id进一步查看具体执行的sql内容

1

2

3

4

select p.*,s.text

from master.dbo.sysprocesses p

cross apply sys.dm_exec_sql_text(p.sql_handle) s

where spid = 74

本次使用环境为2014 SQLSever 

参考文档:

http://www.cnblogs.com/stswordman/p/3358496.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Temp文件夹是用来存储在文件操作过程中的临时文件的文件夹。这些临时文件包括安装软件、解压缩压缩包等操作所需的文件。通常情况下,系统会自动清空Temp文件夹中的临时文件,但有时候系统可能没有注意到这一点而导致垃圾文件越来越多。这些垃圾文件会浪费磁盘空间,并且可能导致磁盘碎片化,影响读写速度。 Temp文件夹存在于C盘的两个地方,一个是C:\WINDOWS\Temp,这是系统公用的;另一个是C:\Documents and Settings\登录的帐号\Local Settings\Temp,这是当前登录账户的配置文件夹下的Temp文件夹。这样的分布对于控制磁盘碎片是不利的。 为了清理C盘的Temp文件夹,你可以使用以下方法之一: 1. 手动清理:定期打开Temp文件夹并手动删除其中的文件。 2. 更改临时文件夹位置:可以在非系统盘(如D盘)上创建一个新的文件夹(例如D:\UserData\TEMP),然后将系统的临时文件夹路径改为新创建的文件夹路径。具体操作是右击“我的电脑”,选择“属性”,进入“高级”,打开“环境变量”对话框,将用户变量和系统变量中的临时文件夹路径改为新创建的文件夹路径。 3. 使用第三方清理工具:可以使用一些第三方软件或小程序来清理Temp文件夹,例如创建一个文本文档,写入两行代码:RD %TEMP% /S/Q和MKDIR %TEMP%,然后将该文件另存为.bat格式(例如CleanTEMP.bat),运行该文件即可自动清空Temp文件夹中的临时文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值