使用ALTER TABLE REBUILD减小HEAP表空间

简介:

论坛上经常会有很多人抱怨数据库HEAP表碎片很大,无法收缩。在2005之前可以通过创建聚集索引解决或者重建表将数据导入,等到表空间变小后再进行收缩。在2008中有一个新的语法ALTERTABLE REBUILD,使用这条语句可以重新生成表。

 

下面是我自己的一个表,碎片非常大,占用了大概11G的空间:

 

使用ALTER TABLE REBUILD之后的效果(差距巨大吧,已经变成了131M):

 

这样就避免了在2005中创建表然后导入再更新表一些列的操作,非常简便。

 


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

相关文章
|
索引
Truncate Table的时候不管是用drop storage 或reuse storage都会将HWM重新设置到第一
A, B 为两个Table . A, B 的数据分别放在 erp_data  表空间下  A, B 的索引分别放在 erp_indx  表空间下   那么我们使用下面的两个语句删除两个表中的数据 Truncate table A  drop    storage  ;...
805 0
|
Oracle 关系型数据库
ORACLE 11G--使用SHRINK方法压缩表空间
1)查看压缩前的表空间状态 SQL> select * from dba_temp_free_space; TABLESPACE_NAME                TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE -----------...
2636 0
|
SQL Oracle 关系型数据库
flashback table肯定会造成rowid跟着修改
flashback table肯定会造成rowid跟着修改,为什么要开启行移动?
|
SQL 关系型数据库
[WorkLog] InnoDB Faster truncate/drop table space
这个系列, 介绍upstream 一些有意思的worklog **问题** 在InnoDB 现有的版本里面, 如果一个table space 被truncated 或者 drop 的时候, 比如有一个连接创建了临时表, 连接断开以后, 对应的临时表都需要进行drop 操作. InnoDB 是需要将该tablespace 对应的所有的page 从LRU/FLUSH li
423 0
|
SQL Oracle 关系型数据库
Oracle大表清理truncate .. reuse storage
Oracle大表清理truncate .. reuse storage deallocate_unused_clause Purpose Use the deallocate_unused_...
1916 0