我有一个生产 MS SQL Server 2005 数据库,我最近成为了一个“无意的数据库管理员”……在查看数据库的设置时,我发现它的默认自动增长设置为 1MB。我读过(并且普遍认为)这不是一个合适的设置 - 数据库是 14GB 大。我愿意(并且可能)改变它,但我的问题是......如果在我们使用它的所有年里没有人注意到它(尤其是用户),我为什么要现在改变它?换句话说,我想我基本理解为什么 1MB 太小了——它可能经常自动增长,可能每天或一天几次——但我在想“如果它没有坏,就不要修复它”。
有什么具体的理由来增加自动增长?它会在自动增长时锁定用户吗?它会重新索引吗?除了向数据库添加更多磁盘空间之外,数据库还有什么作用吗?
这是一篇关于该主题的精彩 MS 知识库文章,涵盖了所有潜在的性能问题: SQL Server 中“autogrow”和“autoshrink”设置的注意事项
不过,我从未见过默认值为 1 MB。我相信默认设置实际上是 10%。[根据 GregD 的评论编辑]这并不是自动增长的真正用途。自动增长是一个安全阀,因此当一些异常增长发生时数据库不会爆炸。您最好每晚运行一次维护作业,以确定数据库是否需要在当天增长,并在必要时调整大小。
我看到的最头疼的是事务日志;如果您有一个大事务,并且超出了数据库事务日志的大小,它将延迟您的事务。同样,如果您正在执行大量插入或其他操作,它也会显着减慢速度(因为它会随着数据库的发展而增长)。
这个问题真的很难回答,因为答案会和这里的人一样五花八门,我们不知道你现在的表现如何。
你目前的表现如何?
自动增长会影响您的用户。频繁的自动增长会经常影响您的用户。
您当前的事务日志有多大?
根据您的事务日志的大小,将自动增长大小设置为百分比而不是固定增长可能会影响您的用户。
自动增长不能替代适当的容量规划。
我听说当您以小部分(1 Mb)自动增长时,数据库会变得碎片化,这将对性能产生不利影响。