压缩,碎片整理,回收空间,shrinkdatabase与shrinkfile

时间:2010-09-27 02:25:00

标签: sql sql-server tsql memory-management storage

[1]陈述:

  • “当从堆中删除数据时,页面上的数据不会被压缩(回收)。如果堆页面的所有行都被删除,通常整个页面都无法回收”
  • “ALTER INDEX重建和重组选项不能用于对堆中的空间进行碎片整理和回收(但它们可用于对堆上的非聚集索引进行碎片整理)。
    如果要在SQL Server 2005中对堆进行碎片整理,则有三个选项:
    • 1)在堆上创建聚簇索引,然后删除聚簇索引;
    • 2)使用SELECT INTO将旧表复制到新表中;或
    • 3)使用BCP或SSIS将数据从旧表移动到新表 在SQL Server 2008中,ALTER TABLE命令已更改,因此它现在可以重建堆“

Plz解释我:
压缩,(反)碎片,回收空间,缩小文件和缩小数据库在MS SQL Server 2005中有什么区别?
shrinkfile和shrinkdatabase在MS SQL Server 2005中完成了什么?

更新:
这个问题的灵感来自于[2]中的讨论 - 如何在MS SQL Server 2005中缩小数据库?

Update2: @PerformanceDBA,
Congats!你在一周内获得了超过500+。这太了不起了!

你的图表
再次感谢你的时间。
我稍后会问,而不是在这里 内部结构不是我的主要关注点,也不是最容易的。

它非常简洁,通常不会引起任何疑问或问题。

我更喜欢使用一些工具,描述/说明,技巧来解决我的怀疑,质疑和讨论 例如,Plz看到我的问题:

它们基本上与我提出的内容重复,但无法在stackoverflow.com中讨论

Update3: @PerformanceDBA,
再次感谢,我的问题的主要目的是确定如何解决具体问题(基于并避免做什么)的方法,这些问题包含您帮助检测的相互矛盾的文档,文章,讨论,答案等。

目前我在这方面没有进一步(无法解决和阻止我)的问题。


[1]
布拉德麦克吉。布拉德的索引指南 (2009年6月11日)
http://www.simple-talk.com/sql/database-administration/brads-sure-guide-to-indexes/
[2]
答案和反馈问题 “将数据库缩小到其初始大小以下” https://stackoverflow.com/questions/3543884/shrink-a-database-below-its-initial-size/3774639#3774639

1 个答案:

答案 0 :(得分:8)