我们的sql服务器迁移被推迟了(自然),在新的截止日期之前,它将耗尽空间。为了保持数据库正常运行,我需要给它另一个开始写入的数据库文件。
我已经分配了空间并准备就绪,但是当我创建它时,SQL Server将立即开始将数据转移到新文件中?
问:我最好先创建两个新文件,然后运行
dbcc shrinkfile (livendb, emptyfile)
旧的那个?确保他们立即平等?
发布于 2018-05-02 10:07:23
Server在确定写入数据的位置时使用比例填充算法。
如果您有一个文件已满90%,并将一个大小相同的新空文件添加到同一个文件组中,则新文件将获得大约90%的写入(因为它几乎为空,而现有文件则为90% )。
将新文件设置为与现有文件相同的大小(当然,如果现有驱动器空间不足,这将位于不同的驱动器上)。比例填充算法需要预先分配大量的文件空间,才能将大部分数据写入新文件。
配置好文件组后,可以通过重新生成表和索引来重新平衡文件之间的数据,确保在ON ....
子句中为正在重建的每个表和索引指定正确的文件组。
顺便说一句,养成总是指定最大文件大小的习惯,并有目的地管理它。在Server代理中设置警报,以便在文件填充时得到警报。当您考虑最大文件大小时,评估一个合理的文件增长增量;该增量能够平衡增长文件所需的时间和不连续增长文件的愿望。目前,如果我认为一个文件组需要10 GB的磁盘,并且我决定将其分成两个文件,每个文件的大小为5GB,我可能会将每个文件的初始文件大小设置为3GB,将文件增长设置为250 GB或500 GB,并将每个文件的最大文件大小设置为,例如,6GB,只是为了有一点回旋余地。然后我会设置一个事件来警告当任何文件超过80%时,给你提供更多磁盘空间的时间。我的回答这里展示了一个设置警报以监视日志文件增长的示例。
https://dba.stackexchange.com/questions/205599
复制