(译)走进SQL Server 2005 tempdb数据库 (一)

引言

 

    本文内容来源于一篇白皮书,但在原文的基础上增加了部分内容,为了表示对原文作者

的尊重,并未标示为原创,特此申明。目的只是希望能与各位网友一起分享好文章,如有撰写不好的地方,请多多原谅,也感谢各位的支持!

 

 

tempdb介绍

 

    SQL Server2005里,tempdb系统数据库经历了许多的改变,包括一些新的用法以及内部的优化,但从SQL Server 2000SQL Server 2005,其架构大部分是没有改变的。

 

    tempdb系统数据库与用户数据库是非常相似的。主要的区别在于:SQL Server关闭以后,存储在tempdb里的数据将会被自动清除掉。(曾经遇到这样一个网友,在过大年前把一些业务测试数据以及相关数据库对象存储在tempdb里,在过年期间,由于服务器应用程序等某种原因造成磁盘空间填满,SQL Server服务异常关闭,磁盘问题解决以后,重启SQL Server,由于没有备份,存储在tempdb里的所有数据都丢失,我们应该避免这样的问题。)

 

    每次SQL Server重启时,tempdb数据库会从model系统数据库那复制一份,并继承某些model数据库的属性,比如“ALLOW_SNAPSHOT_ISOLATION”属性,当然有些属性并不能

继承,比如“恢复模式”属性,无论model数据库是什么恢复模式,tempdb只能是“简单恢复模式”,这是以便始终自动回收 tempdb 日志空间  ,且我们尝试修改其恢复模式时,也会抛出错误如下,提示你不能修改。

 

Msg 5058, Level 16, State 1, Line 1

Option 'RECOVERY' cannot be set in database 'tempdb'.

 

  tempdb中,不能创建和使用新的文件组:

 

    ALTER DATABASE tempdb

ADD filegroup tempdev2

GO

 

Msg 1826, Level 16, State 4, Line 1

User-defined filegroups are not allowed on "tempdb".

 

  也就意味着,tempdb只能使用默认的PRIMARY文件组,但可以为tempdb创建多个数据

文件和日志文件。数据文件的默认大小是8M,当SQL Server重新启动以后,tempdb又会

 

 

恢复到这个默认的配置值,而“自动增长“值只是临时性的,当SQL Server重新启动以后,又会重新恢复(最后这个关于自动增长值的说法,原文是这样:

Auto grow is temporary for tempdb (unlike other types of databases). It is reset when SQL Server restarts.)但经过我测试,并不是这样,重新启动以后,并不会重新恢复。

 

  用户可以在tempdb数据库创建和使用表,也可以使用事务和回滚事务。但是,不能在tempdb数据库中重做日志文件,这是因为一旦SQL Server重新启动,所有内容将不覆存在。因为事务日志并不会被闪回,所以在tempdb数据库中提交事务要比在用户数据库中快。在用户数据库中,事务具有ACID属性,但是在tempdb的事务中,并不具有。

 

  SQL Server使用tempdb存储一些内部对象,比如查询的中间结果集。大部分的这些内部操作不会生成日志纪录,因为它们不需要回滚,所以这些操作是非常快的。

 

  当然,在tempdb上也存在一些限制。另外的,一些数据库属性的操作不能使用在tempdb上,比如上面提到的修改恢复模型,更具体的内容,请参考联机帮助相关部分:

http://msdn.microsoft.com/en-us/library/ms190768.aspx

 

  不允许在tempdb上进行自动收缩。其数据库文件和日志文件收缩能力有限,这是因为存储在tempdb里的许多隐藏对象不能通过收缩操作除去。

 

  下面同样是一些tempdb的限制操作:

 

  .不能开启数据库的”CHECKSUM”属性。

  .不能创建数据库快照。

.不支持DBCC CHECKALLOCDBCC CHECKCATALOG操作。

.最好是离线完成DBCC CHECKTABLE检查操作。这句话的意思是:它需要一个TAB-S锁。

tempdb在使用时,会发生内部的一致性检查操作。如果检查失败,用户连接将会中断,使用了的空间会被中断的连接释放。

 

下篇文章,将带你真正走进tempdb数据库。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值