Man*_*jot 10 index sql-server-2005 maintenance
在 SQL Server 2005 上,如果所有数据库都处于完整模式(每小时事务日志备份),是否可以确定重建数据库的所有索引是否可以增加数据库的日志文件?它可以增长多少?
如果没有直接的答案,那么任何方向都将不胜感激。
提前致谢。
是的,你应该看看关于这个主题的优秀白皮书,虽然它指的是在线索引重建,但它仍然有很多很好的信息
http://technet.microsoft.com/en-us/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;
--
Run Code Online (Sandbox Code Playgroud)
不仅可以检测索引 DDL 操作是否增加了日志文件,它还是默认的操作行。所有索引操作都记录在使用完整恢复模型的数据库中。
我建议您阅读 MSDN 上的以下文章:确定索引磁盘空间要求。
从那篇文章的第 3 章 -用于索引操作的事务日志磁盘空间我将引用:
"大规模索引操作会产生大量数据负载,导致事务日志快速填满。为确保索引操作可以回滚,在索引操作完成之前不能截断事务日志;但是,日志可以在索引操作期间进行备份,因此事务日志必须有足够的空间来存储索引操作事务和索引操作期间的任何并发用户事务。对于离线和在线索引操作都是如此。由于在离线索引操作期间无法访问底层表,因此可能会有很少的用户事务并且日志可能不会增长得那么快。在线索引操作不会阻止并发用户活动,因此,大规模在线索引操作与大量并发用户事务相结合会导致事务日志持续增长,而无法选择截断日志。”
归档时间: |
|
查看次数: |
523 次 |
最近记录: |