2013-04-12 40 views
1

我们有一个庞大的数据库(300GB),其中大部分空间都被一张大桌子占据。这个表有许多列定义为float,每个8字节。不过最近我们意识到,只需要4个字节,我们必须改变每一列的大小,所以我们必须像这样运行一个查询,每列(约6列):何时收缩:缩小一列的大小后还是缩小所有列的大小后?

alter table [HugeTable] alter column [Col] float(1) 

我的问题是:如何什么时候应该在缩小柱尺寸后回收空间?对于什么时候我们有两种可能性的问题:在每个更改表(缺点:需要更长时间)之后,或者在所有列都减少之后。对于我们的想法如何的问题:数据库收缩,聚簇索引重建。在我们的案例中,DBCC CLEANTABLE也会有用吗?从我所能理解的情况来看,它仅适用于可变列类型。

谢谢!

编辑:最后我们决定不使用这种方法。相反,我们正在创建一个具有新结构并逐渐移动数据的表格。

回答

0

我会调整所有的列,然后在数据库上运行维护。在每列调整大小之后不需要执行此操作。

+0

你会建议什么样的维护? –

+0

收缩数据库,重建索引,检查一致性等所有事情,你可能在每周(?)维护工作...... –

+0

不幸的是,由于数据库的大小,我们不能定期运行那些:(一致性检查持续13个小时(!!!),所以我们真的需要尽可能快地保持它。重建索引是否足够了?我知道缩小并不是完全推荐的 –