首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修正数据库更新后的事务日志文件

修正数据库更新后的事务日志文件
EN

Database Administration用户
提问于 2014-08-26 08:20:17
回答 1查看 749关注 0票数 1

我有一个定期(每月)更新的数据库。更新包括许多新的或更改的T过程、函数、索引创建等.

database X具有具有以下设置的事务日志文件:

  • 无限增长
  • 初始尺寸128 MB
  • 增长128 MB

使用的空间最多为5-10% (每15分钟对事务日志文件进行备份)。

因此,上面的设置对于每个数据库都是特定的,但是在共同的情况下,日志文件的大小是足够的,而且不会增加。UPDATE生成后,事务日志文件的大小将增加1或2或3GB。由于我不需要这样大的文件来正常使用数据库,所以我将它们缩回如下:

代码语言:javascript
复制
DBCC SHRINKFILE(2,TRUNCATEONLY)
ALTER DATABASE X MODIFY FILE (NAME = N'x_Log', SIZE = 128MB)

我想在每次更新之后执行上面的代码,但有时我需要多次执行上面的命令,以减少数据库tlog文件(每次需要等待15分钟才能完成tlog备份)。

数据库在FULL recovery模式下使用Always ON,结束了对辅助数据库的日志备份。

有人能说出常规心理医生的想法是不是很糟糕吗?为什么有时我需要执行几次心理医生?

EN

回答 1

Database Administration用户

发布于 2014-08-26 13:06:30

简短回答:

只需将日志文件保持在通常需要的大小,并停止担心它。

更长的答案:

首先,为什么要继续缩小文件?如果它将再次增长(请记住,收缩和增长操作是昂贵的,特别是对于日志而言),那么您得到了什么?在此期间,你把腾出的空间都用来做什么?请阅读这一页,全文这篇文章这篇博客文章,然后带着进一步的问题回来。你不会看到800万人在互联网上无缘无故地告诉你不要退缩:几乎在所有情况下,这都是一个非常糟糕和毫无意义的锻炼。当然也有例外,但这听起来不像是其中之一。

有时我需要多次执行心理医生

我已经说明了产生这个在这个答案中的主要原因。从本质上说,Server必须有两个检查点或两个日志备份,才能打包到日志的可重用部分。(这与日志文件中VLFs的数量和排列以及当前LSN点的位置有关。我们可以在这里发布一本书,但简单的解决办法是在启动之前只做你正在做的事情,或者运行一个额外的日志备份。)

另一种可能是,由于各种原因,日志不能被重用。下一次当您尝试缩小文件而它在第一次尝试时不会收缩时,请检查sys.databases.log_reuse_wait_desc。例如,如果您也在此数据库上使用复制,这可能是由该活动、未复制的事务等引起的。

但通常情况下这只是包扎的事。因此,下一次,发出两个手动日志备份-我不明白为什么您需要等待15分钟的间隔(除非额外的,较小的日志备份之间将抛出您的任何手动进程围绕您的AGs)。或者(如上文所述)停止执行这种毫无意义的工作--特别是因为这项工作是在每个副本上反复完成的。再一次,这是无用的努力,您正在投入的净结果是:您释放了一小部分磁盘空间一段时间。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/74931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档