the*_*ony 12 performance sql-server transaction-log
在考虑数据库性能时,VLF 有多重要?什么会描述 VLF 的最佳情况?
Sim*_*rts 17
什么是虚拟日志文件?
SQL Server 将每个数据库的事务日志文件分成更小的块,称为“虚拟日志文件”(或简称 VLF)。它们的主要功能是作为日志备份中的截断标记,即 SQL Server 只会清除(并标记为可重复使用)完全为空的 VLF。MSDN 有一篇关于事务日志-物理架构的文章。
什么决定了 VLF 的数量?
每次日志文件增长(无论是通过自动增长还是手动增长),日志文件的新部分都会被划分为多个 VLF,完全基于新部分的大小(现有事务日志被单独保留)。因此,小的自动增长设置(即默认的 10% 自动增长)将导致创建大量 VLF。
大量 VLF 的影响是什么?
大量 VLF 导致的主要问题是:
DBCC
因为它们在后台使用数据库快照,以便在不阻塞的情况下进行一致性检查)。如何找出我的数据库有多少个 VLF?
DBCC LOGINFO
将为数据库事务日志中的每个 VLF 返回 1 行。这个问题有几个有用的脚本,可以将其应用于服务器上的所有数据库。
多少 VLF 太多了?
这是你必须为自己做出的判断。我个人的经验法则是,低于 50 不值得搞乱,超过 100(左右),我修复了自动增长设置并记下(在下一个维护窗口中)缩小和重新增长日志(如下所示) .
帮助!我有 1100 亿个 VLF,我的数据库恢复需要一整天!
简短大纲(来自Kimberly Tripp 的博客):
BACKUP LOG
)DBCC SHRINKFILE
withTRUNCATEONLY
将日志文件缩小到尽可能小的大小。ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
以在一个步骤中调整您的事务日志的大小**。** 注意 - 如果您有一个非常大的日志文件(数十 GB 或更多),您可能需要分多个步骤调整大小以获得适当数量的大小合适的 VLF,以避免过度“笨重”的日志备份。由于 VLF 是截断单位,因此它们还确定日志备份大小,如Kim 的博客中所述。
归档时间: |
|
查看次数: |
4741 次 |
最近记录: |