日期:2014-05-18  浏览次数:20508 次

MSSQL表分配空间过大的问题
有没有人知道MSSQL表分配空间过大的问题
在数据库有一个表当中有一个Text类型的字段 频繁的往里面插数据(没有删除)表空间就是会很快的膨胀 
查看表使用空间发现总共分配了3G的空间 但实际上数据只用了100M  
有没有知道是怎么回事啊

------解决方案--------------------
收缩数据库吧dbcc命令
------解决方案--------------------
设置数据库的属性故障还原模型为“简单”。


简单恢复
简单恢复所需的管理最少。在简单恢复模型中,数据只能恢复到最新的完整数据库备份或差异备份的状态。不使用事务日志备份,而使用最小事务日志空间。一旦不再需要日志空间从服务器故障中恢复,日志空间便可重新使用。

与完整模型或大容量日志记录模型相比,简单恢复模型更容易管理,但如果数据文件损坏,则数据损失表现会更高。



重要提示: 简单恢复不适合生产系统,因为对生产系统而言,任何最新更改的丢失都是不能接受的。 


如果使用简单恢复,备份间隔应足够长以使备份开销不影响生产工作,但也要足够短以防止丢失大量的数据。 

------解决方案--------------------
你是不是初始设置的数据库文件过大?
------解决方案--------------------
Text类型的字段本来就很占用空间,并不是说你向Text类型的字段插入几个字符它就占几个的,它会先把空间都占着,等你增删改的时候直接放进入,而不是需要的时候去临时分配空间

这是数据类型决定的,LZ如果不喜欢这样在Sql2005中可以用varchar(max)代替
------解决方案--------------------
如楼上所说.text和char型一样
如char(100),只要有一行,不管这个字段有没有数据,都占100个字节.

但varchar,nvarchar,ntext就不同.可否尝试把他改为ntext型.