SQL Server虚拟日志大小


8

我有些偶然,是DBA,是一位从对数据库管理了解甚少的人那里继承了几个数据库服务器(2005年和2008年)的开发人员,而且似乎对了解更多有关该主题的兴趣甚至更少。

我正在学习,目前正在尝试找出事务日志文件。

我们所有的数据库都已使用简单的恢复模型和自动收缩功能进行设置。我知道使用自动收缩通常是一个可怕的主意,但我的理解是这样做是为了防止事务日志变得不受控制。(自动收缩实际上是收缩日志文件还是仅收缩数据库?)

我发现有关SQL Server 2012的信息,并想知道2005和/或2008是否正确,以及它的确切含义:“当数据库使用简单恢复模型时,数据库引擎会在检查点后截断事务日志。 ..]当虚拟日志已满70%时,数据库引擎会在简单恢复模式下触发自动检查点。” 虚拟日志大小在哪里指定?

我想在所有数据库上禁用自动收缩,但是在此之前,我需要知道日志文件不会很快失去控制。

任何帮助将不胜感激。


1
阅读此rusanu.com/2012/07/27/how-to-shrink-the-sql-server-log,看看它是否对正在发生的事情有所启示
雷木斯·鲁萨努

Answers:


6

单个事务日志文件既具有物理大小(在磁盘上看到),又在物理文件内分解为称为虚拟日志文件(VLF)的逻辑部分。

自动增长和自动收缩都对物理事务日志文件进行操作。

事务日志截断(也称为“日志清除”)在事务日志(VLF)的逻辑部分上运行,并且不影响物理文件的大小。这部分经常是混乱的主题。

日志文件必须始终增长以适应大型事务;关闭自动收缩将使日志文件具有所需的最大大小,而不是实际减小其大小。

如果您的交易量不大,可以禁用自动收缩功能;日志文件将不会无限制地增长,就像数据库在其中FULLBULK_LOGGED您没有进行事务日志备份一样。

对于SQL Server 2005+,此行为相同。


谢谢,这就是我问问题时要寻找的东西。在阅读Remus的早期答复后,我得出了相同的结论。
Petter Brodin 2012年

2

因此,这是我在阅读了其他答复并自行进行研究后发现的:

问:“自动收缩实际上是收缩日志文件还是仅收缩数据库?” 答:据我了解:是的。自动收缩是在数据库级别设置的,并且会影响所有文件(如果您右键单击数据库->属性->文件,或者如果运行查询1,则显示此命令)。但是,自动增长适用于每个文件级别。

问:“在哪里指定虚拟日志大小?” 答:请参阅Jon Seigel的回复以及Remus发布的链接。要查看物理和逻辑日志大小,请使用查询2

一个问题是,如果数据库已激活完全恢复模式,增长到较大的大小,然后将恢复模式更改为简单模式,则由于VLF自动增长,将不会触发检查点。可以通过运行查询3来尝试解决此问题(请参阅Remus的答复以了解日志文件头/尾的潜在问题),这会将日志文件减小到最初创建时的大小。

查询:

1)

SELECT name, physical_name AS current_file_location, DB_NAME(database_id) AS dbname
FROM sys.master_files
WHERE DB_NAME(database_id) = 'mydb'

2)

DECLARE @tmpt TABLE(
    dbname VARCHAR(255),
    logsize DECIMAL,
    logspaceused DECIMAL,
    stat INT
)

INSERT INTO @tmpt
    EXEC ('DBCC SQLPERF(LOGSPACE)')

SELECT * FROM @tmpt WHERE dbname LIKE 'mydb' ORDER BY logspaceused DESC

3)

checkpoint
DBCC SHRINKFILE('logfile_name')

2

正如您在问题中提到的那样,在SQL 2005和2008中,在检查点之后,事务日志文件也将被截断。

我的建议是将恢复模型设置为完全,并创建一个作业以从事务日志文件中进行备份。可以在您的数据库上计划该作业,并在备份后截断事务日志。它会自动为您截断日志文件。请查看以下链接:

SQL Server 2005:http//technet.microsoft.com/zh-CN/library/ms189085(v = sql.90).aspx

SQL Server 2008:http//technet.microsoft.com/zh-CN/library/ms189085(v = sql.100).aspx


是的,从长远来看,这是我的计划,但是现在我只想摆脱自动收缩的问题。
皮特·布罗丁

所做的更改是您确实要将其更改为“完全恢复”,但是在您评估是否确实需要更改之前。如果您需要还原到与灾难尽可能接近的位置,则可以这样做。如果返回上一次完整备份(通常是每晚一次)很好,那么SIMPLE恢复模式将对您有效。
cfradenburg 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.