我已经问过一些关于自动增长和收缩的问题。但我对此有一些疑问。
我有一个每月增长约 300 MB 的数据库。那么最好将其设置为 300 MB 的 Autogrowth 吗?现在设置了 10 MB。
我有很多小型数据库,其中的数据确实约为 50 MB。但它的物理大小约为 900 MB。(所以 850 是可用空间)。我没有缩小这个数据库。好像当数据被添加自动增长时我再次缩小它。但是很少向这个数据库添加数据。所以我认为未来一年它不会增长超过 200MB。
那么我应该缩小数据库吗?如果我保持原样?这会导致任何性能问题吗?或者数据库中有更多的可用空间(超过 90%)会导致任何问题?我认为大多数人认为物理尺寸大会导致性能问题。这是真的还是假的?
SQL Server 2008 R2 Express 数据库大小限制为 10 GB。那么它是mdf和ldf文件的物理大小吗?因为如果我应该在任何时候缩小数据库,我需要考虑这一点。
是的,选择一个能够确保您在业务周期中最小化或消除增长事件数量的自动增长规模是理想的。我敢说,如果每月 300 MB 是可预测的,那么除了设置更合理的自动增长设置之外,您还应该立即将文件增长 4 或 8 GB,以允许一两年的增长而无需担心中断性增长事件(即使使用即时文件初始化,数据文件增长仍会导致事务在完成时等待)。如果您知道您将每月增长大约 300 MB,为什么要推迟所有这些增长事件?在此期间你打算如何处理这个空间?按月出租?
您可能可以将该特定数据库缩小到 200 MB。请务必使用
DBCC SHRINKFILE
or来执行此操作ALTER DATABASE MODIFY FILE
,而不是DBCC SHRINKDATABASE
。Express 限制仅针对数据文件。您可以拥有一个 9.99 GB 的数据文件和一个 600 GB 的日志文件,SQL Server 不会抱怨。好吧,它会以其他方式,但不是由于超出任何任意文件大小限制。也就是说,您应该确保进行简单恢复或以合理的速度备份您的日志。日志文件永远不应该不受控制地增长 - 如果您担心 Express 实例上的日志文件,那么有些事情是不对的。请参阅以下帖子进行大量讨论:
SHRINKFILE 最佳实践和经验
Sql Server - 增长数据库文件的最佳实践
为什么事务日志不断增长或空间不足?
自动收缩或手动收缩不会每次都产生好处,可能会适得其反,请参考以下链接:
http://www.sqlskills.com/blogs/paul/why-you-should-not-shrink-your-data-files/
正如您所做的那样,最好事先估计数据库的大小。但是,如果您计算更长的持续时间会更好,而不是每月重复增长。
拥有可用空间不会导致数据库中的任何性能问题(尽管我对此没有任何引用),但缩小确实会产生负面影响。与其查看数据库大小,不如查看是否存在碎片。