各位朋友,
我正在将 2 个数据库从一个杂乱的硬盘迁移到一个我专门为托管这两个数据库而购买的新硬盘上。这两个数据库的大小大致相等,预计增长速度也相等。将一半的硬盘分配给每个数据库是否合理(这样现在数据库可能有 40% 的未使用空间,而不是我通常保留的 5-10%)?由于 MDF 文件将位于连续的块上,这是否可以防止碎片化?或者这是一个坏主意?我是否应该只保留我通常的缓冲区并让文件及时增长(操作系统可以管理碎片整理)。您有什么想法吗?
答案1
由于数据文件的增长会导致 IO 负载,并且其不可预测性,因此配置尽可能多的可用空间比自动增长更好。如果数据文件在繁忙的一天中自动增长了 x%,该怎么办?预先配置空间还可以最大限度地减少碎片。
很难知道是否要将更多数据库放入服务器上,也很难知道在配置之前实际数据的增长率是多少。在驱动器上留出一些可用空间,但一定要尽可能合理地保留缓冲区空间,同时为未来的发展留出一些灵活性。
我曾经写过一篇博客:使用 DMV 监控关键 SQL Server 统计数据
我在该博客中提供的代码可以用来或者减少,以帮助您关注数据大小与数据库的文件大小。
答案2
我认为将它们设置为 50/50 并不是一个好主意,你的增长假设可能会被证明是错误的,而且碎片化不会太糟糕 - 无论如何,如果需要,你以后可以随时修复它。
答案3
要记住的是,数据库文件的增长可能会有些繁重。我会让 SQL 自动增长,只需根据您的增长模式将增长设置为合理的百分比即可。至于文件碎片,我建议您使用 Diskeeper:http://www.diskeeper.com/business/diskeeper/以帮助控制这种情况。Diskeeper 使用他们所谓的 InvisiTasking,它基本上是影子卷复制,并且能够对实时 SQL 数据库文件(Exchange 也是如此)进行碎片整理。将两个数据库放在同一个驱动器上 - 让它们随意增长,并安装像 Diskeeper 这样的好碎片整理程序,您就不必担心了。