[转]Mssql的Tempdb库的处理

转自:http://wanoyxj.blog.163.com/blog/static/9573613720088249442641/

检查数据库有无问题 : dbcc checkdb 数据库名
--截断事务日志
backup log 数据库名 with no_log
--收缩数据库
dbcc shrinkdatabase (数据库名)

为tempdb添加日志文件:
ALTER DATABASE tempdb ADD LOG FILE
( NAME='templog_1',
FILENAME ='d:\tempdb_log_1.ldf')

增加日志大小:
USE master
GO
ALTER DATABASE tempdb
MODIFY FILE
(NAME ='tempdb_log',
SIZE = 2000MB)
GO


use tempdb
select * from tempdb.dbo.sysfiles
dump transaction tempdb with no_log --清空日志
dbcc shrinkfile ('templog',1)
select * from tempdb.dbo.sysfiles

@重启SQL SERVER服务

清空日志:
DUMP TRANSACTION 库名 WITH NO_LOG
再:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数后确定
SQL Server在每次重启服务时会重建tempdb数据库
如果系统运行过程中 tempdb因需要自动增长了,SQL Serve不会记住增长后的大小,重启服务后仍然恢复到初始大小,
但如果用户使用了手工调整tempdb的大小,重启服务SQL Server会把tempdb重建为用户指定大小


测试示例
tempdb初始化大小为8MB
1)使tempdb自动增长
select b.* into #t from sysprocesses a,sysobjects b
重启后使用sp_helpdb 'tempdb'
可以看到tempdb又恢复到8MB


2) 用户使用Alter Database调整为100MB,
USE master
GO
ALTER DATABASE tempdb
MODIFY FILE
(NAME = tempdev,SIZE = 100MB)


重启服务后使用查看tempdb大小就为100MB
以下查询可以看到tempdb的变化
select a.filename,a.name,a.size*8.0/1024.0 as originalsize_MB,
f.size*8.0/1024.0 as currentsize_MB
from master..sysaltfiles a join tempdb..sysfiles f on a.fileid=f.fileid
where dbid=db_id('tempdb')
and a.size<>f.size

总结:
当系统自动调整tempdb大小时,对文件的读写将暂时的阻塞
所以如果我们预知tempdb将会增加到某个大小时,可以自行调整,从而避免性能下降

 

 

如何收缩 SQL Server 中的 Tempdb 数据库

转载于:https://www.cnblogs.com/Athrun/archive/2012/11/01/2749057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值