我用 C# 编写了一些代码,用于从数据库中删除记录。这是包含在事务中的简单 SQL 删除代码。
using (SqlTransaction trans = conn.BeginTransaction()) {
//some delete code
trans.Commit();
}
我已经删除了数据库中 4 个表中的大约 400 万行。当我通过 Windows 资源管理器检查两个数据库的数据库备份大小时,大小急剧增加了大约三倍
- 删除前:7GB
- 删除后:28GB
我确认 MDF 和 LDF 文件的大小都增加了。我还注意到一些不受删除影响的表的索引大小增加了。
删除后:
删除前:
我的目标是删除记录以减少数据库大小,但它反而增加了。你能告诉我为什么尺寸在增加吗?
编辑:
删除后:
- database_size:61050.69 MB
- 未分配空间:9592.60 MB
- 保留:303512 KB
- 数据: 207040 KB
- index_size: 53024 KB
- 未使用:43448 KB
删除前:
- database_size:10067.88 MB
- 未分配空间:16.69 MB
- 保留:7290176 KB
- 数据: 2937656 KB
- index_size: 4324848 KB
- 未使用:27672 KB
最佳答案
当您删除记录时,它会记录到事务日志中。 因此通过删除如此多的记录,事务日志的大小会增加。
所以我认为您必须清除/重置交易日志(谷歌搜索) 同时,您还重新组织了索引。
这两个步骤都是强制性的。
关于sql-server - 从 SQL Server 中删除行会增加数据库大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37024435/