【问题标题】:SQLServer tempDB growing infinitelySQL Server tempDB 无限增长
【发布时间】:2008-09-17 22:34:25
【问题描述】:

我们有几个“生产环境”(每台三台服务器,我们的系统版本相同。每台都有一个 SQL Server 数据库作为生产数据库)。

在这种环境中,tempdb 事务日志开始快速无限增长,我们找不到原因。相同版本的 SO、SQL Server、应用程序。环境没有变化。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: sql-server database


    【解决方案1】:

    您可能处于完全恢复模式模式 - 如果您正在执行定期备份,您可以将其更改为简单模式,这将减少备份后日志的大小。

    这里是some more info

    【讨论】:

      【解决方案2】:

      您是否尝试过运行 Profiler?这将允许您查看服务器上所有正在运行的查询。这可能会让您对在 tempdb 中创建项目的内容有所了解。

      【讨论】:

        【解决方案3】:

        最好的办法是启动 SQL Server Profiler 并查看发生了什么。在“Writes”列或 Spool 运算符中寻找高值,这些都可能导致高温使用。

        如果只是事务日志在增长,那么试试这个,打开的事务会阻止日志在运行时被缩小。这应该在 tempdb 中运行:

        DBCC OPENTRAN
        

        【讨论】:

          【解决方案4】:

          好的,我想这个问题和我的一样。 tempdb 增长很快。常见的原因是程序员创建了过程,并使用了临时表。 当我们创建这些表,或者其他操作,如触发器、dbcc 命令时,它们都使用 tempdb。 创建临时表,sqlserver会为表分配空间,如GAM、SGAM或IAM,但sqlserver必须保证物理一致性,所以每次只能一个人做,其他对象必须等待。这导致 tempdb 快速增长。 我从MS那里找到了解决方案,大概就是这样,希望可以帮助你: 1.为tempdb创建数据文件,数量与CPU相同,ec:你的主机有16cpu,你需要为tempdb创建16个日期文件。并且每个文件必须具有相同的大小。 2.你需要监控这些文件,确保它们没有满。 3.如果这些文件空间不够大,会自动增长,你需要把其他文件的大小都一样。

          我的英文不好,如果你不能解决它,使用程序 sp_helpfile ,检查它。并将结果粘贴到此处。 当我在新加坡时,我发现了这种情况。 祝你好运。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多