SQL 2005:是否可以确定重建索引维护作业可以增加数据库日志文件的数量?


10

在SQL Server 2005上,如果所有数据库都处于“完全”模式(带有每小时事务日志备份),是否可以确定重建数据库的所有索引是否可以增长数据库的日志文件?它能增长多少?

如果没有直接的答案,那么任何方向都将不胜感激。

提前致谢。

Answers:


9

是的,您应该阅读有关此主题的出色白皮书,尽管它指的是在线索引重建,但它仍然有很多不错的信息

http://technet.microsoft.com/zh-CN/library/cc966402.aspx

如果日志文件是自动增长的,则在完成操作后,您可以使用默认跟踪找到该信息。

DECLARE @filename VARCHAR(255) 
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'  
FROM sys.traces   
WHERE is_default = 1;  

--Check if the data and log files auto-growed. Look for tempdb, log files etc.
SELECT 
    gt.ServerName
    , gt.DatabaseName
    , gt.TextData
    , gt.StartTime
    , gt.Success
    , gt.HostName
    , gt.NTUserName
    , gt.NTDomainName
    , gt.ApplicationName
    , gt.LoginName
FROM [fn_trace_gettable](@filename, DEFAULT) gt 
JOIN sys.trace_events te ON gt.EventClass = te.trace_event_id 
WHERE EventClass in ( 92, 93 ) --'Data File Auto Grow', 'Log File Auto Grow'
ORDER BY StartTime; 
--

7

不仅可以检测索引DDL操作是否增加了日志文件,而且是默认操作行。所有索引操作都记录在使用完整恢复模型的数据库中。

我建议您阅读有关MSDN的以下文章:确定索引磁盘空间要求

从该文章的第3章- 用于索引操作事务日志磁盘空间,我将引用:

大型索引操作可能会产生大量数据负载,从而导致事务日志快速填充。为确保可以回滚索引操作,在索引操作完成之前,不能截断事务日志;但是,该日志因此,在日志操作期间,事务日志必须具有足够的空间来存储索引操作事务和任何并发用户事务。对于离线和在线索引操作都是如此。因为在脱机索引操作期间无法访问基础表,所以用户事务可能很少,并且日志的增长速度可能不会很快。联机索引操作不会阻止并发用户活动,因此,大规模联机索引操作与大量并发用户事务相结合会导致事务日志持续增长,而无法选择截断日志。”

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.