我在 SQL Server 2016 中有一个内存优化表,启用了文件持久性。该表只有 100MB。SQL Server 不断地在磁盘上创建新文件,这些文件从几百 MB 开始,但随后不断增长,直到驱动器空间耗尽,然后它们被清除并再次开始该过程。这些文件以每小时约 900MB 的速度增长。运行下面的 SQL 显示所有空间都在 Precreated Data 中 - 所以它甚至没有实际存储大量数据,只是分配空间供以后使用。
SELECT state_desc, file_type_desc, COUNT(*) AS [count],
SUM(file_size_in_bytes) / 1024 / 1024 AS [on-disk size MB]
FROM sys.dm_db_xtp_checkpoint_files
GROUP BY state, state_desc, file_type, file_type_desc
ORDER BY state, file_type
文件组上的文件增长设置为无限制,所以我假设我可以为此设置一个值并停止它增长,但我找不到任何东西来说明为什么它首先分配了这么多空间。表中的数据确实变化非常快(随着数据不断处理,大量插入和删除,但非预创建的数据永远不会超过 4GB。
SQL Server 中是否有控制此文件预创建的设置?对文件组的自动增长设置限制是否安全?