数据表空间的重用(Reusing space in a table)
2010-03-29 14:06
381 查看
如果删除掉一些数据行,我是否需要压缩SQL Server数据库? 以便于这些空间可以被重新使用.这是一个很好的问题,切经常被问到,其中涉及到SQL Server数据库对删除的管理以及压缩机制.
创建一个测试table: Test,填空1000行数据.
再次运行SQL DMV查询:[/code]
运行过之后可以看到:[/code]
1.理解SQL Server怎样自动的重新利用数据表的空间,下面以实例来做简要的说明.
1.1 建立临时测试数据创建一个测试table: Test,填空1000行数据.
代码[code]--insert additional rows DECLARE @cnt INT ; SET @cnt = 0 ; WHILE @cnt < 500 BEGIN SET @cnt = @cnt + 1 ; INSERT INTO dbo.Test2 ( col1,col2 )VALUES ( @cnt,'test row # ' + CAST(@cnt AS VARCHAR(10))) ; END
再次运行SQL DMV查询:[/code]
1500行的数据占用503个数据页,每个页的空间使用率为99.7%,可以看到新增三个数据页.如果空间可以重用的话,应该会有足够多的空间存储新增的500行数据,并不需要新增数据页.
3.空间回收(DBCC CLEANTABLE)
在某些情况下SQL Server会自动的回收空间重复利用,但是在某些情况下则不会.
可以通过DBCC Command来回收不用的空间.
DBCC CLEANTABLE('TEST', 'dbo.Test2') ;
运行过之后可以看到:[/code]
回收不用的空间以后,页面空间使用率大大降低.还是503个页,并没有压缩.
在DROP,DELETE之后用DBCC CLEANTABLE可以及时回收做删除标记的资料作占用的空间,可以更好的提高页面和磁盘的空间利用率.
相关文章推荐
- 手工建库后表空间数据文件非自动扩展引起的错误:ORA-01653: unable to extend* in tablespace*
- transport tablespace将一个表空间下的数据移到另一个表空间
- undo表空间不足,ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'
- Oracle database TSPITR(TableSpace Point-In-Time Recovery) 表空间基于时间点的恢复
- ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段(EXP-00056: 遇到 ORACLE 错误 1652 ORA-01652: unable to extend temp segment by 128 in tablespace TEMP)
- oracle 导入(imp)数据时的表空间(tablespace users)问题
- Oracle的resouce、unlimited tablespace 及如何把数据导入不同的表空间
- 导入数据到不同表空间的问题!(unlimited tablespace 权限在作怪)
- 临时表空间不够ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
- Tablespace Point-in-Time Recovery--关于表空间即时点恢复
- Oracle10导入数据时报[unable to extend temp segment by 128 in tablespace]
- 实验 表空间时间点恢复TSPITR(Tablespace Point In Time Recovery)
- tablespace user 数据文件表空间信息
- InnoDB实现独立表空间多数据文件 (InnoDB multiple datafiles per single-tablespace)
- ORA-01652:unable to extend temp segment by num in tablespace name
- 空间中三维矢量(Vectors in 3D space)
- 使用参数innodb_file_per_table支持MySQL InnoDB表数据共享空间自动收缩
- Oracle 默认表空间(default permanent tablespace) 说明
- ORACLE DBA学习笔记--表空间的管理(tablespace)
- ORA-1652: unable to extend temp segment by 128 in tablespace xxx Troubleshootin