拥有大约8个tempdb数据文件是一个很好的实践,因为在tempdb中会发生大量的对象创建和删除。这样,sql server就可以并行地使用数据文件。
鉴于这种情况下的数据文件超过一个,sql server使用比例填充算法,从而按比例填充每个数据文件。但是,当文件已满时,则第一个文件被展开并写入。然后第二个文件被展开和写入等等。
因此,我的观点是-使8个数据文件丢失的好处,一旦文件是满的,它的行为就好像它只是一个文件。
这个问题对吗?是否存在这样的解决方案--例如,使文件组中的所有文件一起展开。这样比例填充算法就可以继续使用所有的数据文件。这是dba必须处理的问题还是sql服务器内部处理的问题?
发布于 2021-09-30 06:26:54
如果一段时间内只有一个文件增长,这是正确的:
创建8个数据文件的好处是,一旦文件已经满了,就会丢失,而且它的行为就好像它只是一个文件一样。
为了避免出现这种情况,直到Server 2016 (13.x),您可以使用跟踪标志1117:
当文件组中的文件满足自动增长阈值时,文件组中的所有文件都会增长。此跟踪标志影响所有数据库,只有当每个数据库都安全地将文件组中的所有文件以相同的数量增长时,才建议使用此标记。
但是跟踪标志会影响实例上的所有数据库。从Server 2016及更高版本开始,您有机会在文件组级别配置该行为。对于tempdb,它是默认的。
ALTER DATABASE [MyDBName] MODIFY FILEGROUP [MyFileGroup] AUTOGROW_ALL_FILES;https://dba.stackexchange.com/questions/300374
复制相似问题