
在开启自动收缩选项的情况下,SQLServer定期会检查文件使用情况。如果空闲空间大于25%,SQLServer就会自动运行自动收缩数据库文件的动作。
1、是不是我的数据库现在收缩失败了啊?答:你的数据库收缩还没有完全失败,但已经可以视为失败,因为要做完收缩遥遥无期,需要的时间将十分漫长,具体原因见第三问。
2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?
答:数据库的收缩时间与数据库大小是成正比的,数据库越大,收缩时间越长。所以建议要定时进行数据库收缩,每年一次或几个月一次,依数据库增长速度而定。
3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?
答:不论是按百分比收缩还是按空间大小进行收缩,都要求数据库所在磁盘预留一定的空间,最好在15%以上。在数据库进行收缩时,系统将把这部分预留空间作为缓冲区,用来保存和整理数据库中的数据,然后再把整理过的数据写回数据库。像你说的这种情况,数据文件大小为598G,可用空间为9M,基本无法进行有效的数据库收缩。建议你把数据库文件解挂后,复制到750G以上的大容量硬盘中,重新附加数据库后再进行收缩。
4、数据库收缩的简单原理是什么啊?和盘符所剩空间有关系么?
答:数据库收缩的简单原理有两条,一是清理日志,因为日志记录的是数据库的历史 *** 作,在一段时间后,如果没有保存价值可以清除;二是清理空白空间,这种空间是删除数据表(一般是临时表)后造成的,数据表删除后,数据库空间不会自动缩小,所以数据文件就会越来越大。和盘符所剩空间的关系,第三问已经回答了。
一个事务才压缩32个数据页,一个数据页8KB,100G,要开启多少次事务?
一般在线系统,最好夜深人静的时候干。
或是断开所有连接,备份,清空日志后收缩,逐个文件压缩,这下你知道为啥要建立数据库文件组了吧!
select fileid,name,filename from sysfilesDBCC SHRINKDATABASE(1)
我个人看可能是你硬件配置过低导致,或是磁盘已经有问题了,或是有资源争夺的可能。
100G数据文件,32核心,32G内存,16块300G硬盘,我压缩一次也就30分钟。
估计跟你的磁盘空间有关系。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)