首页 MsSql教程 sql-server – 触发无限期WAITFOR会增加日志文件的大小吗?

sql-server – 触发无限期WAITFOR会增加日志文件的大小吗?

在我的应用程序的最后一个版本中,我添加了一个命令,告诉它等待Service Broker队列中的某些内容:

WAITFOR (RECEIVE CONVERT(int,message_body) AS Message FROM MyQueue)

DBA告诉我,自添加以来,日志大小已经遍及屋顶.这可能是正确的吗?或者我应该在别处寻找?

解决方法

任何活动的打开事务都会固定日志,防止截断并最终导致增长.如果你开始一个事务,写入日志然后等待永远希望消息最终唤醒你,你只需固定日志并使其增长.

最近我开始建议人们在激活的程序中避开WAITFOR以及循环.只需发出一个RECIEVe并完成,让激活机制为你循环(它确实)并且不要WAITFOR,只是普通的RECEIVE.

RECEIVE的WAITFOR风格在内部创建了一个保存点.这会生成日志(至少3个日志记录)并确实在等待时将日志固定到位.长时间的WAITFOR超时(或更糟,无限的超时)将是一个非常糟糕的做法.

关于作者: dawei

【声明】:乐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

热门文章