SQL Server数据库大小 - 为什么这么大?

时间:2012-09-21 12:51:55

标签: sql sql-server sql-server-2008 database-design

我正在构建一个包含大约30个表的数据库:

  • 表格中最大的列数约为15.
  • 对于数据类型,我主要使用VarChar(50)作为文本
  • 和Int og SmallInt用于数字。
  • 标识列是Uniqueidentifiers

我一直在测试数据和删除 再次。我没有删除所有数据,所以everey表是空的。 但是,如果我查看数据库的属性 管理工作室,大小为221,38 MB!

怎么回事?请帮忙,我收到通知 从我的托管公司,我超出了我的极限。

祝你好运, : - )

2 个答案:

答案 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数据库的存储分配。您使用的越多,它想要的速度就越快。