Sql server 为什么SqlServer需要一个大的事务日志文件

Sql server 为什么SqlServer需要一个大的事务日志文件,sql-server,transactions,sql-server-2012,sql-delete,transaction-log,Sql Server,Transactions,Sql Server 2012,Sql Delete,Transaction Log,我在SQLServer2012数据库中工作了几年,我一直想知道我在事务日志中观察到的一件奇怪的事情。我一直在互联网和StackOverflow上寻找解释,但没有成功。在做其他事情之前,我想先了解发生了什么 在过去的几天里,我用默认选项创建了一个新的数据库,我再次观察到同样的情况。数据库已使用简单恢复模型定义 这种情况很容易解释。我有一个只有主键的简单表。此表是使用默认选项创建的(没有复制、没有分区、没有与任何其他表的关系等等)。这只是一个简单而孤立的表 此表大约有380.000行,磁盘中的数据大

我在SQLServer2012数据库中工作了几年,我一直想知道我在事务日志中观察到的一件奇怪的事情。我一直在互联网和StackOverflow上寻找解释,但没有成功。在做其他事情之前,我想先了解发生了什么

在过去的几天里,我用默认选项创建了一个新的数据库,我再次观察到同样的情况。数据库已使用简单恢复模型定义

这种情况很容易解释。我有一个只有主键的简单表。此表是使用默认选项创建的(没有复制、没有分区、没有与任何其他表的关系等等)。这只是一个简单而孤立的表

此表大约有380.000行,磁盘中的数据大小约为70 Mb,索引大小约为23 Mb。当我从这个表的schema.table中执行
删除操作时,事务日志大小会一直增大,直到500 Mb。事务日志的大小限制为500 Mb,因此事务最终失败。我是唯一一个处理这个数据库的人。事务日志的初始大小为10 Mb,增长大小为10 Mb

问题是:为什么SQLServer需要500 Mb的日志大小来删除大约93 Mb的数据(数据+索引)?我不明白原因。当然,我可以使事务日志大小限制更大。但这是我最后的选择,在我想了解发生了什么之前。此外,我不想执行
截断表
,因为我将来需要使用该数量的行进行过滤删除

编辑:最后,我尝试将事务日志文件限制大小增加到1 Gb。执行
DELETE
命令最终需要530MB的大小。530MB以删除93MB的数据?这正常吗


谢谢你们的回答,让我了解一下。

请看这里:和这里:和这里:谢谢大家。我看了那篇文章,但它们没有澄清我,尽管它们显然与此相关。问题