SQL Server 2005 TempDB大小

时间:2011-03-11 02:21:34

标签: sql-server sql-server-2005 tempdb

我们正在使用SQL Server 2005.由于较大的tempdb大小,最近SQL server 2005在我们的生产环境中崩溃。 1)大tempdb大小的原因是什么? 2)有没有办法查看tempdb中的数据?

4 个答案:

答案 0 :(得分:1)

  

2)有没有办法查看tempdb中的数据?

不,因为它没有留在那里。 Tempdb有非常特殊的处理方式,比如每次重启服务器都会被丢弃。

  

1)大tempdb大小的原因是什么?

低效的SQL,维护作业或仅手头的数据。显然,一个800gb,6000gb的数据库可能需要比4gb在线crm尝试更多的tempdb空间。你没有用绝对术语指定任何大小。什么是大的?我的tempdb数据库在我的小型服务器上以64gb硬编码。

进入Tempdb的典型SQL是:

  • 作为查询的一部分无法解决的排序(您需要存储某些键)
  • DISCTINCT。需要tempdb中返回的所有数据才能找到双打。
  • 连接期间可能发生的某些事情。
  • Tempdb用法(临时表)。我只是提到它们,因为在加载和擦洗过程中我经常会保留几百兆字节的数据。

通常,您可以通过在查询日志中使用hugh IO stats来查找这些查询,或者只是放慢速度。

那就是说,维护计划也在那里,但有理由。最后,你的“大”可能是我的“甚至不值得一提”。这真的取决于你做了什么。使用查询跟踪工具找出需要很长时间的内容。

物理上Tempdb在处理方面非常特殊 - 如果没有必要,sql server不会写入文件(即保留内存中的thords)。写入光盘是记忆流动的标志。这与正常的db写入行为不同。 Tempdb,如果它流过,最好放在速度相当快的SSD上......这通常不会太贵,因为它仍然会相对较小。

使用此处的查询查找tempdb的其他查询 - 基本上你在这里用脏水钓鱼,需要先尝试一下,直到找到罪魁祸首。

答案 1 :(得分:0)

发展SQL Server数据库的常用方法 - 任何数据库,而不仅仅是tempdb - 是将其数据和日志文件设置为自动增长(尤其是日志文件)。 SQL Server非常乐意发展日志和数据文件,直到消耗掉所有可用的磁盘空间。

最佳做法,恕我直言,是允许对数据文件进行有限的自动增长(对其增长的大小设置上限)并修复日志文件的大小。您可能需要进行一些分析以确定日志文件需要多大。特别是对于tempdb,恢复模型也应该设置为简单。

答案 2 :(得分:0)

Ok tempdb是一种特殊的数据库。您在程序等中使用的任何临时对象都在此处创建。因此,如果您的应用程序在查询中使用了大量临时表,它们都将驻留在此处,但是在重置连接(spid)之后它们应该自行清理。

可以增加tempdb的另一件事是数据库维护任务,但是它们会对数据库日志文件造成更大的损失。

每次重新启动SQL服务时,也会清除Tempdb。它基本上删除了数据库并重新创建它。我同意@Nic关于保留tempdb的原因,不要随意使用它,tempdb中的空间问题通常表明其他地方存在另一个更大的问题。更多的空间将掩盖问题,但只有这么长时间。你的驱动器有多少可用空间,你有tempdb吗?

其他事情,如果还没有,请尝试将tempdb放在它自己的驱动器上,如果可能的话,还要将数据和日志文件放在各自独立的驱动器上。

因此,如果您不重新启动SQL Server / Service,您的驱动器很快就会用完空间。

答案 3 :(得分:0)

使用tempdb

从sys.database_files

中选择(size * 8)作为FileSizeKB