我有一个大小约为 100 GB 的数据库,但我在扩展数据库大小时遇到了严重的问题。这是我的设置:
- SQL Server 2005,版本 9.0.4035
- 操作系统:Windows Server 2003 SP2 x86
- 在 Hyper-V 上作为来宾运行
- 不同磁盘上的数据文件和日志文件(虚拟和物理)
- MDF 文件的磁盘为 500 GB,上面没有其他内容,因此没有碎片问题等。
起初,我有 10% 的自动增长的默认设置。当数据库大约 30 GB 左右时,它开始因超时而失败,所以我将其更改为 1000 MB。现在即使这样也失败了,所以我尝试手动增加文件大小。我不得不取消我的尝试,因为它们“从未”完成,直到我下降到增加50 MB,这需要22 分钟!:-o 有些东西必须严重损坏...
我一直在监控所有磁盘(系统、数据和日志)的平均磁盘队列长度,除了保存日志文件的磁盘之外,它们都是空闲的,这个磁盘队列长度总是超过 10。在此操作之前和之后它也很空闲。
这是我用来手动增加文件大小的命令(我在初始大小上增加了 50 MB):
ALTER DATABASE [MyDB] MODIFY FILE ( NAME = N'MyDB', SIZE = 103987200KB , FILEGROWTH = 51200KB )
编辑:当我几个月前创建这个数据库时,我用 10 GB 初始化它,我不记得我有任何明显的延迟。例如,我还可以使用 2 或 3 GB 恢复此服务器上的其他数据库,它工作正常。这台机器上的 I/O 性能并不优越,但远没有那么差。
有任何想法吗?非常感谢您!
您是否设置了即时文件初始化?如果不是,可能值得研究并打开,看看是否有任何区别。
我们遇到了同样的问题,解决方案是始终手动将数据库大块扩展。扩展 500MB 需要 2-3 分钟,远不及您看到的 22 分钟。
如果您不是完全偏执,我会接受 Chirang 对即时文件初始化的建议。
但是,听起来确实有些不对劲。它是镜像还是奇偶突袭设置?
我猜你遇到了某种存储性能问题。如果您在扩展文件的 spid 上运行 sp_who2 并查看等待类型是什么。