2011-03-11 90 views
0

我们正在使用SQL Server 2005.最近,由于tempdb大小很大,SQL Server 2005在我们的生产环境中崩溃。 1)什么可能是大tempdb大小的原因? 2)有什么方法可以查看tempdb中有哪些数据?SQL Server 2005 TempDB大小

+0

增加了一些更相关的标签。 – 2011-03-11 02:53:06

回答

0

的常用方法长出了SQL Server数据库—任何数据库,而不仅仅是tempdb —是有它的数据和日志设置为自动增长的文件(尤其是日志文件)。 SQL Server非常高兴地增长日志和数据文件,直到消耗所有可用的磁盘空间。

最佳做法,恕我直言,是为了让上的数据文件自动增长有限(穿上它有多大可以生长的上限),并修复日志文件的大小。您可能需要做一些分析来确定日志文件需要多大。对于tempdb,尤其是,恢复模式也应该设置为简单。

+0

通常的方式(非专业环境< - 这是你忘了)。我不知道任何大/重要的数据库服务器管理员只是让事情自动增长。但是,后来,我每天处理1000 + gb数据库,数据库数量达数亿行。 – TomTom 2011-03-11 05:52:41

+0

也许你没有读到我说的话:他的数据库吞噬他硬盘的原因是因为它保留在默认(自动增长)配置中。馊主意。 – 2011-03-11 19:08:53

0

好tempdb是一个有点特殊的数据库。在这里创建你在程序中使用的任何临时对象。因此,如果应用程序在查询中使用了大量临时表,它们将全部驻留在此处,但在连接(spid)重置后它们应该自行清理。

能长出tempdb的另一件事是数据库维护任务,但他们将采取更大的通行费上的数据库日志文件。

每当您重新启动SQL服务时,Tempdb也会被清除。它基本上会丢弃数据库并重新创建它。我同意@Nic关于将tempdb保持原样,不要与它混淆,tempdb中的任何空间问题,通常表示另一个更大的问题。更多的空间将会掩盖这个问题,但只会持续很长时间。您的驱动器有多少可用空间,您有tempdb?

其他的东西,如果没有,尝试,把tempdb中它自己的驱动器,以及一个更可能的话,有自己独立的驱动器上的数据和日志文件。

所以,如果你不重新启动您的SQL Server /服务,您的驱动器将很快耗尽空间,

0

2)有什么办法来看看什么样的数据是有在tempdb?

没有,因为它不保存在那里。 Tempdb有非常特殊的处理方式,就像每次服务器重新启动时一样。

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

低效的SQL,维护工作,或只是手头上的数据。显然,一个800GB,6000GB的数据库可能需要比4GB的在线crm尝试更多的tempdb空间。您绝对不会指定任何尺寸。什么是大?我在我的小型服务器上安装了64GB的tempdb数据库。

是进入临时数据库

典型的SQL是:

  • 排序是不可解作为查询的一部分(你需要存储的密钥某处)
  • DISCTINCT。需要tempdb中的所有返回数据来查找双打。
  • 在连接期间可能会有某些诗歌。
  • Tempdb用法(临时表)。我只是提到它们,因为在加载和清理过程中,我经常保存数百兆字节的数据。

通常情况下,您可以通过在查询日志中查找统计信息来查找这些查询,或者只是简单地查询。

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

物理Tempdb是非常特殊的治疗 - sql服务器不会写入文件,如果它不必(即保持内存thigh)。写入光盘是内存流动的标志。这与正常的db写入行为不同。 Tempdb,如果它流过,最好放在一个体面快的SSD上......它通常不会太贵,因为它仍然会相对较小。

在此处使用查询来查找有关tempdb的其他查询 - 基本上,您在这里的脏水中钓鱼,需要尝试一些东西,直到找到罪魁祸首。

0

使用tempdb

选择(尺寸* 8)FileSizeKB从sys.database_files中