sql server 中收缩数据库有意义吗??
本人是sybase-dba,也顺便兼职搞搞sqlserver。基于sybase的经验,我觉得没有必要经常收缩sql server数据库的大小或者数据文件文件的大小。
因为在sybase中迄今没有能够减小已经分配数据库大小的办法,也就是说:在sybase中数据库的空间大小只能涨不能降。其实,这不是sqlserver没必要收缩的原因。
在sql server中数据文件中会随着时间而产生一些碎片,但是,收缩数据库不会合并各个小的碎片。收缩数据mdf文件时剩下来的空间是初始化时分配了但是还没用到的空间。绝不是各个page之间的碎片部分。
还有,sql server中的日志文件是按照顺序写的(从文件头一直往下写,也就不存储在碎片的概念了)。收缩数据库日志文件的效果就是让日志记录点跳到文件前部分而已。
日志文件被收缩,以后还得继续写日志吧?照样ldf文件又变大了。 个人认为:收缩ldf的大小不如截断日志来得实在。只要适时的截断不活跃日志,或者数据文件所在磁盘有足够的空间,收缩数据文件是没有什么意义的!
将sql server传输给其他人的时候,如果对数据文件进行压缩,那么收缩和不收缩效果差不多(因为压缩算法肯定会忽略数据文件中的空页面或者碎片)!
收缩数据库的唯一效果可能就是对象在附加你的数据库的时候不用分配那么多的磁盘空间了。
个人感觉收缩数据文件不能提高性能!