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