收缩数据库会提高数据库速度吗?

作者:cftea 来源:ITPOW(原创) 日期:2008-9-15

今天在论坛上看到一个问题:收缩数据库会提高数据库速度吗?

当时由于比较急,没有仔细研究,现在来讨论一下。

收缩数据库就是把数据库中不再使用的空间归还给操作系统,修改、删除等操作可能会造成数据库中存在不再使用的空间。数据和事务日志都可以收缩。

对于读速度

肯定会提高的,就如同你把一屋子的书整齐地堆放在书架上一样,肯定利于查询,但是究竟会提高多少,要看不可使用空间占总空间的比例,占得比例越大,说明性能提升可能相对来说越明显。

对于增、删、改速度

如果没有聚集索引,对数据的增、删、改不会影响其它记录,应该来说,这和读速度的影响是一样的。

如果有聚集索引,得具体想想,有聚集索引,则受填充因子的影响,每一数据页肯定是填充不满的,没有填充满就是为了增、改数据时不会影响其它页的数据,因为有聚集索引的记录必须按顺序存放,即使最后加入的数据,也可能存储在第一页中,现在关键就是收缩数据库会不会把这些未使用的空间当作不再使用的空间来对待,我试验了一下,发现不会,也就是说,即使是聚集索引,收缩数据库也会使性能提升。

重要说明

上面得出的结论是,会提升数据库增、删、改、查性能,但这只是相对的,它只是会减少硬盘的搜寻成本,收缩数据库可能还会引发另外一些问题,比如索引碎片增多,关于此问题,请参见整理索引碎片,提升SQL Server速度。即使如此,对于频繁操作的数据库,还是建议收缩一下,避免太多不再使用的空间,即使性能不显著,对于节约磁盘空间来说也挺有用的。

相关阅读

相关文章