DBCC SHRINKFILE 为什么会运行很长时间?

简介:

今天启用数据压缩功能后,数据库空出了很大的空间,然后使用DBCC SHRINKFILE收缩数据库,花费了很长的时间。相信很多使用SQL Server的朋友都遇到过这样的问题,为什么SQL Server收缩文件这么耗时?

 

MSDN上看到“DBCC SHRINKFILE is single-threaded and may take a long time tocomplete”(http://msdn.microsoft.com/en-us/library/dd894051(v=sql.100).aspx)也就是说SQL Server是单线程运行文件收缩,即使你有多个CPU性能也不会有帮助。

 

这里我做了一个测试,打开两个Query同时运行ShrinkFile命令,第二个语句会报错:

File ID 1 of database ID 17 cannot be shrunk as it is eitherbeing shrunk by another process or is empty.

DBCCexecution completed. If DBCC printed error messages, contact your systemadministrator.

 

文件收缩的三个步骤(可以从sys.dm_exec_request command栏位看到)

Step

Command

Description

1

DbccSpaceReclaim

Clean up deferred allocations and purge empty extents preparing for data moves.

2

DbccFilesCompact

Moves pages beyond the target to before the target and truncate file as required.

3

DbccLOBCompact

Compacting the LOB data.

 

SQL Server执行DBCC ShrinkFile以32个PAGE作为一个Transcation.当交易中被处理的PAGE移动到Targe空间后,这个Transcation被Commit然后开始一个新的Transcation。这样可以避免长时间的Transcation导致日志文件增长过大。当前Transcation被Rollback/cancel之后,Shrink操作只回滚当前的交易(最多32个Page)。这样如果在维护期间内不能够完成一次Shrink操作,可以分成多批次完成,每次处理一部分。

 

从网上找到了一篇如何快速收缩数据库文件的文章:

http://www.sqlservercentral.com/articles/SHRINKFILE/71414/

How It Works: SQL Server 2005 DBCC Shrink* May Take Longer Than SQL Server 2000:http://blogs.msdn.com/b/psssql/archive/2008/03/28/how-it-works-sql-server-2005-dbcc-shrink-may-take-longer-than-sql-server-2000.aspx


本文转自 lzf328 51CTO博客,原文链接:http://blog.51cto.com/lzf328/1110764

相关文章
|
开发框架 前端开发 .NET
分享68个ASP.NET源码总有一个是你想要的
分享68个ASP.NET源码总有一个是你想要的
1849 1
|
JSON 前端开发 JavaScript
【前端】使用jQuery封装一套UI组件 - 级联选择器组件
本篇文章来讲解下级联选择器组件 级联选择器,在实际项目中也是比较常用的组件,比如:省市区三级关联,上下级联动等 最后面会附上全部代码
|
JSON 前端开发 JavaScript
AJAX,这一篇就够了
学会它的基础,就理解了它的核心,其他的封装库,也就拿来就行了
622 2
|
消息中间件 存储 缓存
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
2226 8
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
|
前端开发 安全 JavaScript
在阿里云快速启动Appsmith搭建前端页面
本文介绍了Appsmith的基本信息,并通过阿里云计算巢完成了Appsmith的快速部署,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解底层技术,只需要在控制台图形界面点击几下鼠标就可以快速部署并启动Appsmith,非技术同学也能轻松搞定。
|
存储 编解码 算法
微帧科技:综合多项指标评价视频质量,才能更接近主观感受
视频质量评价指标如PSNR、SSIM和VMAF是衡量画面质量的重要工具,但不应成为视频工作者的唯一目标。微帧致力于优化画质,提升观看体验,强调综合评估指标,以实现最接近人眼主观感受的效果。本文探讨了PSNR avg.MSE与PSNR avg.log的区别,以及VMAF的优势与不足。
|
数据采集 监控 算法
大数据与物流行业:智能配送的实现
【10月更文挑战第31天】在数字化时代,大数据成为物流行业转型升级的关键驱动力。本文探讨大数据如何在物流行业中实现智能配送,包括数据采集与整合、数据分析与挖掘、智能配送规划及实时监控与评估,通过案例分析展示了大数据在优化配送路线和提升物流效率方面的巨大潜力,展望了未来智能配送的高度自动化、实时性和协同化趋势。
1555 1
|
监控 Ubuntu Linux
在Linux中,如何使用Pacemaker和Corosync?
在Linux中,如何使用Pacemaker和Corosync?
超好用的截图软件Snipaste(包含安装包)、如何设置Snipaste开机自启
这篇文章提供了Snipaste截图软件的介绍,包括它的功能、如何下载和安装,以及如何设置开机自启动的详细步骤。