Ros*_*ush 18 sql-server-2008 sql-server best-practices sql-server-2008-r2 transaction-log
我一直在通过 sql server 2008 r2 中的数据收集器监视文件增长两周。数据库以大约 35(MB)/天的速度持续增长。数据库尚未达到 2 GB 的初始大小。
DB 文件自动增长设置为 5MB,我想尝试不同的方法,所以我正在寻找建议和/或评论。
每周周日晚上 1:30 有一项调整任务运行。该任务将:
我想在每周调整计划中再添加两个步骤:
通过将增长负担置于离线时间,我希望通过减少重负载期间自动增长事件的数量来提高性能。
我有两个关于自动增长文件的问题。
ALTER DATABASE|MODIFY FILE
来增长文件,那么我如何确定SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)
?Aar*_*and 28
您的目标应该是尽可能少地自动增长。一天七次是痛苦的,即使是即时文件初始化。
不要做收缩数据库。曾经。Shrinkfile,也许,但只有在一个非凡的事件之后。缩小它只是为了再次增长是徒劳的,实际上应该称为自动碎片。
如果恢复模式很简单,那么您根本不需要将日志文件增加 250 GB。文件中的已用空间会随着时间的推移自动清除,除非您在一个月前开始了一个事务并且无意提交或回滚它。
所以我的建议是:
在安静时期手动将数据文件自动增长到可以适应几个月增长的大小。在此期间你保存它做什么?
将数据文件的自动增长增量设置为相对较小的值(以便它在发生时不会中断用户),并对此事件发出警报(例如,您可以在默认跟踪中捕获它,或通过扩展事件)。这可以告诉您,您正在达到您估计的最高点,是时候再次手动增长了。此时,您需要保留本手册,以防您想在不同的驱动器上添加新文件/文件组以容纳空间,因为最终您将填满当前驱动器。
将日志文件自动增长到比以往任何时候都大的两倍。它不应该进一步自动增长,除非有一些异常交易阻碍了事情。您还应该监视此事件,以便了解它们。
Nic*_*ley 12
如果可能,您应该尽量避免自动增长。问题是您无法控制增长何时发生,并且您的系统在增长时可能会受到严重打击。
将您的文件大小设置为一个月左右的合理大小,并从那里监控您的增长率,计算出您估计 X 时间量的空间,并将您的大小设置为 + 误差幅度。
我已经设置了一个简单的监控作业,当文件大小在自动增长之前达到预定义的最大值时,它会提醒我。你可以使用这样的东西:
SELECT instance_name,
[Data File(s) Size (KB)],
[LOG File(s) Size (KB)],
[Log File(s) Used Size (KB)],
[Percent Log Used]
into ##Logsize
FROM
(
SELECT *
FROM sys.dm_os_performance_counters
WHERE counter_name IN
(
'Data File(s) Size (KB)',
'Log File(s) Size (KB)',
'Log File(s) Used Size (KB)',
'Percent Log Used'
)
AND instance_name = 'database your interested in'
) AS Src
PIVOT
(
MAX(cntr_value)
FOR counter_name IN
(
[Data File(s) Size (KB)],
[LOG File(s) Size (KB)],
[Log File(s) Used Size (KB)],
[Percent Log Used]
)
) AS pvt
go
declare @logsize int
Select @logsize = [Percent Log Used] from ##Logsize
If @logsize > the maximum percent you want the log to fill too i.e 90
BEGIN
--Do your thing here
END
Drop table ##Logsize
Run Code Online (Sandbox Code Playgroud)
这当然可以安排为一项工作。
归档时间: |
|
查看次数: |
41134 次 |
最近记录: |