我正在构建一个包含大约30个表的数据库:
我一直在测试数据和删除 再次。我没有删除所有数据,所以everey表是空的。 但是,如果我查看数据库的属性 管理工作室,大小为221,38 MB!
怎么回事?请帮忙,我收到通知 从我的托管公司,我超出了我的极限。
祝你好运, : - )
答案 0 :(得分:5)
我建议您首先查看数据库的恢复模式。默认情况下,恢复模式为FULL。这将使用您执行的所有事务填充日志文件,在执行备份之前不要删除它们。
要更改恢复模式,请右键单击数据库,然后选择“属性”。在属性列表中,选择“选项”(位于右侧窗格中)。然后将“恢复模型”更改为“简单”。
您可能还想缩小文件。为此,右键单击数据库并选择“任务” - >收缩 - >文件。您可以通过更改中间的“文件类型”选项缩小数据文件和日志文件。
马丁的评论非常有趣。即使日志文件处于自动截断模式,您仍然会记录删除的问题。如果您创建了大型表,则在截断文件之前,日志文件仍将展开并且空间不会恢复。您可以使用TRUNCATE
而不是DELETE
:
truncate table <table>
不会记录每个被删除的记录(http://msdn.microsoft.com/en-us/library/ms177570.aspx)。
delete * from table
记录每条记录。
答案 1 :(得分:4)
当您执行插入,更新,删除和设计更改每个事务的日志文件时,会创建一大堆其他数据。此事务日志是SQL Server数据库的必需组件,因此无法在任何可用设置中禁用。
以下是微软关于进行备份以收缩SQL Server生成的事务日志的文章。
http://msdn.microsoft.com/en-us/library/ms178037(v=sql.105).aspx
另外,您要为列编制索引吗?在具有高行数的表上由多列组成的索引可能会变得不必要地大,特别是如果您只是在进行测试。尝试每个表只有一个列只有一个聚簇索引。
您可能还想了解表统计信息。它们可以帮助您索引,还可以帮助您执行SELECT DISTINCT或SELECT COUNT(*)等查询。
http://msdn.microsoft.com/en-us/library/ms190397.aspx
最后,您需要升级SQL Server数据库的存储分配。您使用的越多,它想要的速度就越快。