相关疑难解决方法(0)

IO 请求时间和更少的写入延迟

我面临着与不断增长的日志文件相关的问题,因此我收到了错误。当我检查 SQL 日志时,我发现以下消息(错误日志中几乎 90% 都填充了这些消息)

SQL Server 遇到 1 次 I/O 请求需要超过 15 秒才能在文件中完成

几乎所有数据库都会发生这种情况,包括 temdb [.mdf 和 .ndf 文件] 以及我也收到以下消息

平均吞吐量:0.34 MB/秒 I/O 饱和度:196 次上下文切换 1210

最后一个未完成的目标:530 avgWriteLatency 2

FlushCache:在 142370 毫秒内清理了 6233 个 buf,384 次写入(避免了 99 个新的脏 buf),用于 db 6:0

我的 temdb 大小和其他数据库和日志文件大小足够大。

历史

  • 以前的开发人员已经多次进行数据库收缩和日志收缩。
  • 所有数据库都处于压缩模式。

我的行动计划

  • 我发现日志文件的初始大小很小,增长了 10%。我计划将初始大小增加 512 MB,增加 512 MB 以获得合理数量的 VLF。

    问题 1:虽然我会在非高峰时段进行工作,但进行这些更改是否有可能损坏我的数据库或日志文件?

    问题二:数据库压缩方式会影响IO操作吗?如果是,我该如何解决?

  • 我计划从防病毒检查中删除所有数据库和日志文件。

  • 我计划将目标恢复时间更改为 < 1 分钟的数据库(特别是 tempdb 和我的数据库)

    问题 3:这会影响我的数据库吗?我的意思是刷新缓冲区和写入磁盘应该可以提高性能,对吗?

    问题 4:我有 3 个 tempdb …

compression sql-server-2012 tempdb transaction-log

6
推荐指数
1
解决办法
1248
查看次数

MSDB 日志文件大小

我们有一个包含 60 个数据库的 SQL Server 2008 集群。

完整备份每晚运行一次,日志备份每 15 分钟运行一次。

MSDB数据库恢复模型设置为简单(默认)。

为了能够查看这些作业的历史,我们必须设置一个清理历史日志的作业。

但是,当此作业运行时,日志文件MSDB会变大(20 - 40 GB)。

我们定期缩小日志文件,因为它有超过 80% 的“可用空间”

日志文件设置为按需增长,没有“自动收缩”

有什么办法可以避免这个日志文件增长?

我们应该启用“自动收缩”还是创建一个作业来收缩日志文件?

sql-server-2008 sql-server transaction-log msdb

6
推荐指数
1
解决办法
4824
查看次数

自动增长 - 使用百分比?

最好不要对自动增长设置使用百分比文件增长吗?

以下建议对 500GB 以下的数据库使用百分比值增长,但是否建议这样做?

http://performance-expert.blogspot.ie/2012/06/tuning-autogrow-settings-of-sql-server.html

如果磁盘空间有限或无法调整数据库大小,则应将 >autogrowth 值配置为固定百分比。例如,对于 500 GB 以下的数据库,将自动增长值配置为 >10%,如果数据库超过 500 GB,则配置为固定的兆字节数。

谢谢!

更新:下面我在一些数据库上添加了 Autogrowth 的快照。对此有什么建议吗?

还有什么是预测数据库大小的最佳方法?

在此处输入图片说明

sql-server auto-growth

5
推荐指数
3
解决办法
9909
查看次数

如何找出哪些进程导致数据库或数据库文件自动增长?

我有一个进程渴望 tempdb,但我正在努力识别这个进程。

\n\n

我有什么方法可以实现这一目标?

\n\n
\n

我们已收到警报,因为 Tempdb 现在已占据您之前在 T:\\ 驱动器上回收的空间。同样,磁盘上还剩余 10MB。从今天早上 10:18 开始,我可以在 REP 实例上的数据文件中看到许多自动增长事件。总共有 330 个自动增长事件,每个事件大小为 512MB,总计 168GB。

\n\n

事后很难强调什么在 Tempdb 中使用了这个空间,您是否知道今天有任何进程可能以这种方式使用 Tempdb?

\n
\n\n

/ ------------------------------------------------- ----------- \\

\n\n

确定自动增长事件发生的频率

\n\n

当 SQL Server 执行自动增长事件时,触发自动增长事件的事务必须等到自动增长事件完成后才能完成。当自动增长事件发生时,这些自动增长事件会导致您的性能略有下降。因此,最好能够适当调整数据库大小,以便很少发生自动增长事件。

\n\n

如果您对系统上自动增长事件发生的频率感兴趣,您可以使用跟踪捕获这些事件。通过了解哪些数据库正在执行自动增长事件,您可以调整这些数据库文件增长属性,以便它们执行自动增长事件的频率降低。您可以使用探查器 \xe2\x80\x9cData File Auto-grow\xe2\x80\x9d 和/或 \xe2\x80\x9cLog File Auto-grow\xe2\x80\x9d 事件来跟踪这些数据库自动增长事件。如果您运行的是 SQL Server 2005 或更高版本,则默认跟踪已捕获这两个自动增长事件。如果您还没有\xe2\x80\x99t 关闭默认跟踪,那么您可以使用默认跟踪文件来查找这些自动增长事件。如果您已关闭默认跟踪,则可以启用它,或者设置新的探查器跟踪以捕获 \xe2\x80\x9cData File Auto-grow\xe2\x80\x9d 和 \xe2\x80\x9cLog File Auto-grow \xe2\x80\x9d 事件。

\n\n

默认跟踪记录到文件中。我在清单 4 中提供了代码,向您展示如何从默认跟踪文件中提取所有自动增长事件。如果您创建自己的探查器跟踪会话来捕获这些自动增长事件,那么您将需要修改此脚本以满足您的探查器跟踪设置。

\n\n

https://www.simple-talk.com/sql/database-administration/sql-server-database-growth-and-autogrowth-settings/

\n\n

马塞洛·米奥雷利\n2014 年 3 月 11 日

\n\n
\\*--------------------------------------------------*/\nDECLARE @filename NVARCHAR(1000);\nDECLARE @bc …
Run Code Online (Sandbox Code Playgroud)

process sql-server tempdb sql-server-2014

3
推荐指数
1
解决办法
3968
查看次数