AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 61479
Accepted
Robin
Robin
Asked: 2009-09-03 02:30:48 +0800 CST2009-09-03 02:30:48 +0800 CST 2009-09-03 02:30:48 +0800 CST

我的 templog.ldf 很大(45gb),如果我该怎么办?

  • 772

我安装了 SQL 2005,并且我的 templog.ldf 文件不断增长,以消耗它所在驱动器上的所有可用空间。有时它会停止几mb,但有时它会更进一步,这是c驱动器,我认为这种行为可能与我看到的其他一些问题有关。

我的问题是,我应该怎么做,我可以将日志移动到另一个驱动器,但我有理由假设它不会在那里做同样的事情。我假设这种行为可能是我可以更改的结果,并且 45gb 对于 tempdb 日志来说是一个不寻常的大小。我们在代码中确实使用了很多临时表和表值函数,因此使用 tempdb 的空间很大,我可以理解 tempdb 数据库的增长,但不明白 templog 增长的原因。

到目前为止,我已经运行了 DBCC OPENTRAN('tempdb') 来查看是否有任何旧事务在附近,它们不是。我已经阅读了有关如何缩小 tempdb 并已经这样做了几次,但我真的想知道如果我能做些什么来阻止这种情况的发生,或者更多关于它为什么会增长如此之多的详细信息第一名。

==编辑==

1) tempdb 使用简单的恢复模型

2) templog 的增长发生在早上几个小时内,当时我们有一些预定的查询正在运行,基本上是前一天办公时间用完的报告负载。文件的大小在这段时间内稳步增长。我们控制同时运行多少并发报告,增加并发报告的数量会增加日志的增长速度。

sql-server-2005 tempdb transaction-log
  • 7 7 个回答
  • 36435 Views

7 个回答

  • Voted
  1. Chirag
    2009-09-04T06:43:16+08:002009-09-04T06:43:16+08:00

    我们遇到了类似的问题,在向 Microsoft 提出 PSS 电话并深入调查该问题后,我们将其划分为以下可能的原因和解决方案。

    原因:

    出现这些症状的可能原因是放置用户数据库的磁盘/lun 存在严重的 I/O 响应问题;这会导致用户数据库上的自动检查点需要很长时间才能完成。

    现在,tempdb 上的检查点仅在 tempdb 日志已满 70% 时才会出现,并且它的优先级低于用户数据库检查点。因此,当用户数据库上的自动检查点发出并试图完成时,由于 tempdb 的大量使用导致 tempdb 日志文件快速填满;在 70% 的日志使用率时,临时数据库检查点出现,但在用户数据库检查点之后排队。

    在用户数据库检查点完成的时间内,tempdb 日志文件不断被填满,如果设置了 autogrow,则日志文件在需要更多空间时会增长。这就是日志文件不断增长的原因。

    总之,您描述的症状最可能的根本原因是由于您的用户和/或 tempdb 数据库/日志文件的磁盘/lun 的 I/O 响应不佳。

    解决方案:

    我们在整理 I/O 子系统时解决了这个问题,方法是设置一个警报,该警报在 tempdb 日志文件已满 75% 时触发,并作为响应执行一项强制手动“检查点”的作业(优先于自动系统检查点),清除 tempdb 日志以防止它无限期地自动增长。将日志文件保留为自动增长以应对任何其他可能性仍然是一个好主意。此外,我强烈建议您在安装修复程序后考虑根据您的环境将 tempdb 日志文件的大小减小到有意义的大小。

    希望这可以帮助。

    • 4
  2. Best Answer
    mrdenny
    2009-09-03T17:05:38+08:002009-09-03T17:05:38+08:00

    检查您的报告查询。你有什么有区别的吗?他们中的任何一个都有笛卡尔连接吗?

    是否有任何报告查询以联接成员的身份访问链接服务器?如果是这样,这可能会导致 tempdb 日志和数据库增长。

    当报告在早上运行时,它们中的任何一个都会崩溃吗?

    • 3
  3. joeqwerty
    2009-09-03T03:03:45+08:002009-09-03T03:03:45+08:00

    临时数据库上的恢复模式设置是什么?如果未设置为简单,则将其设置为简单。这应该阻止它增长。如果它已经设置为简单,那么我会说有一个潜在的问题需要解决,任何缩小文件的尝试都只是解决问题的症状,而不是根本原因。

    • 1
  4. Robin
    2009-09-03T06:53:08+08:002009-09-03T06:53:08+08:00

    在过去的几个小时里,我一直在阅读和做笔记

    http://technet.microsoft.com/en-gb/library/cc966545.aspx

    那里有很多细节和解决问题的建议。似乎除非您的 tempdb 正在扩展并且永远不会停止增长,否则它可能只是占用了它需要的空间量,并且最初应该配置为该大小。有一节是关于估计 tempdb 所需的空间以及跟踪可能占用 tempdb 空间的部分。因此,我要做的第一件事就是将 tempdb 移到更大的驱动器上,然后看看会发生什么。

    有一个名为“tempdb logging 所需的空间”的部分指示哪些功能使用日志,还有另一个较早的部分详细介绍了使用 tempdb 的功能的超集。

    标题为“监控 I/O”的部分有一些关于性能计数器的想法值得关注,快速浏览一下我的服务器,将这些放在你可能遇到的 io-bottleneck 领域。我会监视这些一段时间,看看情况如何。tempdb 日志文件的利用率实际上也低于 50%,这符合它今天早上在负载下扩展的想法,并且此后一直保留该空间。

    我会在它成长到的大小是它需要的大小的基础上继续前进,在未来监控这个大小,并确保它在任何驱动器上都有增长空间。正如这里的一些人所建议的那样,我将查看临时日志扩展时正在执行的操作,看看是否可以在其中进行任何调整。我还将密切关注那些 io 性能计数器,看看是否需要处理一些事情。

    还有另外一个有趣的部分,标题为“升级到 SQL Server 2005”,它表明 tempdb 在 2005 年用于比 2000 年更多的事情(包括新功能和以前不使用 tempdb 的现有功能)。我最近才升级到 2005,所以这可能是这突然成为问题的部分原因。不过,我不记得在其他任何地方看到过关于升级到 2005 的内容,这有点痛苦。

    • 1
  5. Chris J
    2009-09-03T03:57:48+08:002009-09-03T03:57:48+08:00

    一些 SQL 查询或存储过程正在做坏事——你唯一能做的就是分析 tempdb 以捕获“数据库:日志文件自动增长”事件,当这种情况发生时,使用分析器和查询像 sysprocesses 这样的表来查找找出糟糕的过程是什么。

    不幸的是,追踪流氓过程的方法是老式的侦探工作。

    您是否尝试过使用 DBCC SHRINKFILE() 调整 tempdb 日志文件的大小?如果是这样,从 [非常小的值] 到 45GB 或更多需要多长时间?

    • 0
  6. RBarryYoung
    2009-09-03T04:11:12+08:002009-09-03T04:11:12+08:00

    这很可能是由失控的交叉连接查询引起的。最好的办法是使用 Profiler 找到它,然后修复它。

    找到它的另一种方法是限制 TempDB 日志文件的大小,然后等待查看哪个查询失败。但是,我敢打赌它已经失败了,没有人告诉你。

    • 0
  7. Adam Weigert
    2009-09-03T18:34:07+08:002009-09-03T18:34:07+08:00

    如果重新启动 SQL 引擎,文件将设置为初始大小。您应该在所有自动增长文件上设置最大大小。

    • 0

相关问题

  • 为什么当我尝试删除数据库时 SQL Server 2005 挂起?

  • SQL 洗衣清单

  • 如何提高 SQL Server 镜像性能

  • 聚集索引与非聚集索引?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve