Hows做大事务日志会影响性能吗?

时间:2009-08-09 15:22:29

标签: sql-server

我已经看到我们的数据库具有完整的恢复模型并且具有3GB的事务日志。

随着日志变大,这将如何影响数据库的性能以及访问数据库的应用程序的性能?

JD

6 个答案:

答案 0 :(得分:7)

建议的最佳做法是将SQL Server事务日志文件指定为“自己的磁盘或LUN”。

这是为了避免磁盘上的事务日志文件碎片化,正如其他海报所提到的那样,并且还要避免/最小化磁盘争用。

理想情况是让您的DBA提前为您的数据库环境分配足够的日志空间,即一次性分配x GB的数据。在专用磁盘上,这将创建一个连续的分配,从而避免碎片。

如果您需要增加事务日志,那么您应该再次尝试以相当大的块来完成这些操作,以便努力连续分配。

您还应该考虑不缩小您的事务日志文件,因为重复收缩和自动增长会导致磁盘上数据文件碎片化。

我认为最好将autogrowth数据库属性视为故障安全,即您的DBA应主动监视事务日志空间(可能通过设置警报),以便它们可以相应地增加事务日志文件大小以支持您的数据库使用要求但是可以使用autogrowth属性来确保数据库在发生意外增长时可以继续正常运行。

一个更大的事务日志文件本身如果不会对性能造成损害,因为SQL Server会按顺序写入日志,所以只要您管理整体日志大小并适当分配额外空间,就不应该担心。

答案 1 :(得分:1)

有两种方式。

如果您的系统配置为自动增长事务日志,随着文件变大,您的SQL服务器将需要做更多工作,您可能会放慢速度。当你最终耗尽空间时,你运气不好,你的数据库将停止进行新的交易。

您需要使用DBA(或者您可能是DBA?)并执行频繁的定期日志备份。将它们从服务器上保存到另一个专用备份系统。在备份日志时,将回收现有日志文件中的空间,从而防止日志变得更大。备份事务日志还允许您在上次完全备份或差异备份后将数据库还原到特定时间点,这可以在发生服务器故障时显着减少数据丢失。

答案 2 :(得分:0)

如果日志碎片化或需要增长,则会降低应用程序的速度。

答案 3 :(得分:0)

如果您不通过执行备份来定期清除事务日志,则日志将变满并占用整个可用磁盘空间。

答案 4 :(得分:0)

如果日志文件以较小的步长增长,则最终会出现大量虚拟日志文件 这些虚拟日志文件将减慢数据库启动,还原和备份操作。

这是一篇文章,展示了如何解决这个问题: http://www.sqlserveroptimizer.com/2013/02/how-to-speed-up-sql-server-log-file-by-reducing-number-of-virtual-log-file/

答案 5 :(得分:0)

为了提高性能,最好将SQL Server日志文件与sql server数据文件分开,以优化I / O效率。 数据文件的写入方法是Random,但是SQL Server会顺序写入事务日志。 使用顺序I / O,SQL Server可以在不重新放置磁盘头的情况下读取/写入数据。