我的初始数据库大小应该是多少?

7

我正在将一个数据库从MySQL迁移到SQLServer。在创建数据库时,我应该将初始大小设置为多少?我知道导入的数据库大小约为130MB,但会不断增长。初始大小应该是130MB还是只需采用默认的2MB?

5个回答

5

你应该将它调整为适合你的数据大小,每当文件需要增长时,你都会受到性能损失。

这取决于它增长的速度,我会建议使用10%自动增长来达到150MB。

MSDN上有一些值得阅读的建议。


6
永远不要使用百分比来进行自动增长。这样做只会带来麻烦。如果数据库很小,它可能需要在短时间内多次自动增长,从而影响性能。如果数据库变得很大,10%的自动增长可能意味着文件将巨幅增长,从而影响性能。此外,数据库通常不会在非工作时间内增长——它们会在被访问时增长。因此,请为您预期的数据负载选择合理的增长量,比如50-200MB。DBA们知道有更少的使用自动增长百分比的数据库时,就会感到稍微安心一些。 - mattmc3
3
如果数据库很小且具有固定的50MB增长,则可以改变你的论点,否则你将使它比必要的更大。如果他的数据库变得很大,例如100GB,而他设置了50MB自动增长,那么它将不断增长,这将再次影响性能。实际情况应该根据具体情况评估,我不明白如何在不知道使用情况的情况下推荐一个固定大小,因此推荐使用百分比以及一个更详细建议的链接。... - Chris Diver
2
自动增长是一项安全措施,而不是增加文件大小的方法,因为它发生的时间是不可预测的。如果您正确管理数据库,则可以在非工作时间使其增长,您应该使用sp_spaceused或其他方法来检查数据库文件的大小,并在自动增长发生之前通知您,以便您可以在方便的时间手动执行此操作。 - Chris Diver

3

将其设置为至少与当前大小相同,可能还要有一个不错的缓冲区以便在迁移期间进行即时增长。根据增长率,我会这样做:

初始大小:150MB(如果大小不是问题,则为200MB)

自动增长:是

自动增长大小:从5MB到25MB不等(取决于您的增长预期)


1
+1 我也更喜欢固定的MB数量而不是百分比的增加。 - marc_s

2
USE MASTER;
GO
CREATE DATABASE StackOverflowDatabase
ON 
( NAME = 'StackOverflowDatabase',
    FILENAME = 'C:\Program Files\Microsoft SQL Server\Your version\MSSQL\DATA\SO_db.mdf',
    SIZE = 200MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 50MB )
LOG ON
( NAME = 'StackOverflowDatabase_log',
    FILENAME = 'C:\Program Files\Microsoft SQL Server\Your version\MSSQL\DATA\SO_db.ldf',
    SIZE = 20MB,
    MAXSIZE = 50MB,
    FILEGROWTH = 10MB ) ;
GO

0

使用50 MB自动增长的200 MB是正确的解决方案。请记得为tempdb使用单独的驱动器,如果可能的话,将日志与数据放在不同的磁盘上以获得更好的性能。此外,请记住,您的数据可能是130 MB,但您还需要考虑索引以及它们将消耗多少空间。另外,即使您有一个200MB的数据文件,您的备份文件也会小得多,这通常是讨论像这样的小型数据库时真正的空间问题所在。


0

你需要了解的一件事是数据库增长的速度有多快。

如果增长率很小(比如每周1 MB),

对于MDF文件,

将初始大小设置为200 MB

将自动增长设置为100 MB(即初始大小的50%)

对于LDF文件,

将初始大小设置为20-50 MB(即MDF文件初始大小的10-25%)

将自动增长设置为10-25 MB(即LDF文件初始大小的50%)

避免使用百分比进行自动增长,因为它是不可预测的。例如,如果您为自动增长指定百分比,并且DB大小增长到300MB,则意味着30 MB。如果您的DB大小增长到500 MB,则意味着50 MB。另一方面,如果您使用MB,则可以确保DB始终按照您设置的MB数量增长。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接