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

时间:2014-12-01 09:17:17

标签: sql-server transactions sql-server-2012 sql-delete transaction-log

我已经在SQLServer 2012数据库中工作了几年,我总是想知道我在事务日志中观察到的一件奇怪的事情。我一直在Internet和StackOverflow上搜索没有成功的解释。在做其他任何事情之前,我想了解发生了什么。

持续时间我创建了一个带有默认选项的新数据库,我再次观察到相同的情况。数据库已使用简单恢复模型定义。

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

此表包含 380.000 行,并且磁盘中的数据大小 70 Mb ,索引大小 23 Mb 近似。当我执行此表的DELETE FROM schema.table时,事务日志大小会增加,直到 500 Mb 。事务日志的大小限制为500 Mb,因此事务最终失败。我是唯一一个在这个数据库上工作的人。事务日志的初始大小为10 Mb,增长大小为10 Mb。

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

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

感谢任何可以让我了解它的答案。

0 个答案:

没有答案