SQL Server数据库的收缩一直在执行

SQL Server数据库的收缩一直在执行,第1张

删除表给数据库缩小空间时:执行如下 *** 作老是存在执行了5,6个小时,还是一直没有执行完成。

在开启自动收缩选项的情况下,SQLServer定期会检查文件使用情况。如果空闲空间大于25%,SQLServer就会自动运行自动收缩数据文件的动作。

1、是不是我的数据库现在收缩失败了啊?

答:你的数据库收缩还没有完全失败,但已经可以视为失败,因为要做完收缩遥遥无期,需要的时间将十分漫长,具体原因见第三问。

2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?

答:数据库的收缩时间与数据库大小是成正比的,数据库越大,收缩时间越长。所以建议要定时进行数据库收缩,每年一次或几个月一次,依数据库增长速度而定。

3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?

答:不论是按百分比收缩还是按空间大小进行收缩,都要求数据库所在磁盘预留一定的空间,最好在15%以上。在数据库进行收缩时,系统将把这部分预留空间作为缓冲区,用来保存和整理数据库中的数据,然后再把整理过的数据写回数据库。像你说的这种情况,数据文件大小为598G,可用空间为9M,基本无法进行有效的数据库收缩。建议你把数据库文件解挂后,复制到750G以上的大容量硬盘中,重新附加数据库后再进行收缩。

4、数据库收缩的简单原理是什么啊?和盘符所剩空间有关系么?

答:数据库收缩的简单原理有两条,一是清理日志,因为日志记录的是数据库的历史 *** 作,在一段时间后,如果没有保存价值可以清除;二是清理空白空间,这种空间是删除数据表(一般是临时表)后造成的,数据表删除后,数据库空间不会自动缩小,所以数据文件就会越来越大。和盘符所剩空间的关系,第三问已经回答了。

一个事务才压缩32个数据页,一个数据页8KB,100G,要开启多少次事务?

一般在线系统,最好夜深人静的时候干。

或是断开所有连接,备份,清空日志后收缩,逐个文件压缩,这下你知道为啥要建立数据库文件组了吧!

select fileid,name,filename from sysfiles

DBCC SHRINKDATABASE(1)

我个人看可能是你硬件配置过低导致,或是磁盘已经有问题了,或是有资源争夺的可能。

100G数据文件,32核心,32G内存,16块300G硬盘,我压缩一次也就30分钟。

估计跟你的磁盘空间有关系。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9994579.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存