目前我有一个大约 2 GB 的 SQL Server 数据库。我知道明年它将增长到最大约 10 GB。硬盘空间根本不是问题。
现在将数据文件大小调整为 20Gb,然后对硬盘进行碎片整理,有什么缺点吗?
我是否也应该将日志文件的大小调整为 1Gb?调整到非常大,这样就不会出现碎片。
对于这个问题,我想避免数据文件在磁盘本身上变得碎片化,但我不想对性能产生负面影响。
答案1
如果您可以预测 MDF 和 LDF 尺寸,那就去做吧。
除了分区对齐和 64k 簇大小的格式(根据 TomTom 的回答),还要记住,要对表进行碎片整理(索引维护),MDF 中需要有大约 1.2 倍于该表大小的可用空间。因此,对于 6GB 的表,MDF 上需要大约 7.5GB 的可用空间。这是 MDF 和 LDF 意外增长的常见原因。
答案2
我总是将数据库的大小调整到一个合理的大小。
但更重要的是正确分区,尤其是使用 RAID 单元时。确保您的分区也对齐。并使用 64gb 节点大小的自定义 NTFS 格式。
答案3
碎片存在于两个层面:SQL 和 OS。仅当文件在碎片驱动器上预先确定大小后,才会发生 OS 碎片。如果您根据最大需求确定文件大小并禁用自动增长,则除非您手动将一些数据移动到新创建的数据文件中,否则磁盘不会出现碎片。
无论如何您都应该使用 dbcc showcontig 检查 SQL 碎片。
所以,对于您的问题,答案是肯定的:最佳做法是根据不断增长的需求指定大小。这样,SQL 就不会在空间分配上浪费时间,同时还能使 SQL 数据字节在磁盘上保持连续的顺序。