【问题标题】:MSSQL Server 2005 tempdb problemMSSQL Server 2005 临时数据库问题
【发布时间】:2010-10-21 11:58:38
【问题描述】:

所以我有一个行为怪异的数据库。我正在查看服务器上的所有活动,并且 tempdb 不断增长。它在大约 45 分钟内增长了 30GB。我不断检查 tempdb 中分配的空间,它总是大约 8mb。我知道它不需要它分配的所有空间,我已经看到 1 个事务发生,其中 tempdb 基本上是空的,并且它仍在增长。 在我看来,引擎不是使用先前分配的空间而是选择使用更多的硬盘空间。 我注意到今天早些时候我们的 tempdb 非常大,并重新启动了 SQL,这使 tempdb 的大小减小到一个合适的大小,但从那以后它又一直在增长,并且不断地重新启动 SQL 不是一种选择,因为这是一个生产环境。我在这台服务器上的高清空间有限,所以我需要将 tempdb 保持在合理的大小。

【问题讨论】:

    标签: sql-server-2005


    【解决方案1】:

    您是否对正在运行的脚本进行了分析?您是否使用探查器来确定 SQL 活动?

    我的第一个想法是使用临时表 (#table) 和可能的笛卡尔积连接的脚本?

    请注意,在 SQL Server 启动时会重新创建 tempdb,这就是为什么在您重新启动服务时它会被截断。

    【讨论】:

    • 我可以控制的所有数据库都没有使用临时表。我所知道的唯一笛卡尔连接每周运行一次。我现在正在运行分析器以试图弄清楚发生了什么。我知道它会在启动时截断 tempdb。我们专门为此重新启动了它,因为我们的硬盘空间不足。
    • 好的,让我们等待您的个人资料完成,也许这将提供一些关于正在发生的事情的见解。你有开过车管所吗?
    • 此外,连接、排序(排序依据)和某些 dbcc 命令使用 tempdb 进行存储以创建结果集。也在你的个人资料输出中寻找这些。
    • 好吧,我们发现其中一个作业有一个步骤,其中有很多奇怪的数据操作,这会占用 tempdb。一旦解决了这个问题,一切都应该再次工作。感谢您的帮助。
    • 很高兴发现问题。如果是这种情况,应将其标记为已解决。
    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    相关资源
    最近更新 更多