我在我的程序中使用带有 Linq-to-SQL 的 SQL Server 数据库
我正在使用此代码清空数据库
db.Tb1.DeleteAllOnSubmit(db.Tb1.Select(x => x));
db.SubmitChanges();
执行此代码后,数据库中的所有内容都将被清除。但问题是删除行时数据库的大小并没有减少。
我的意思是在没有数据的情况下使用该代码后,数据库的大小仍然相同
对不起英语不好
我在我的程序中使用带有 Linq-to-SQL 的 SQL Server 数据库
我正在使用此代码清空数据库
db.Tb1.DeleteAllOnSubmit(db.Tb1.Select(x => x));
db.SubmitChanges();
执行此代码后,数据库中的所有内容都将被清除。但问题是删除行时数据库的大小并没有减少。
我的意思是在没有数据的情况下使用该代码后,数据库的大小仍然相同
对不起英语不好
这就是 SQL Server 的工作方式。除非您在数据库上手动运行“释放未使用的空间”操作,否则不会返回空间,该操作会重新组织记录在数据库文件中的物理存储方式。否则,未使用的空间将被保留并在添加新记录时重新使用。
每当删除行时,数据库不会收缩其数据文件。您必须要求服务器收缩其文件,例如使用 T-SQL 命令DBCC SHRINKDATABASE
(请参阅DBCC SHRINKDATABASE 的 MSDN 文档)。这种行为的主要原因可能是收缩对性能的影响。此外,服务器将重用现在空闲的页面。对于定期删除大量行或截断完整表的数据库,您可以将收缩安排为维护任务。UPDATE STATISTICS
然后,您还应该为该表安排更新数据库统计信息(T-SQL 命令)。