oracle数据库中table的空间在delete后为什么没有收回.docVIP

oracle数据库中table的空间在delete后为什么没有收回.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oracle数据库中table的空间在delete后为什么没有收回,oracle数据库delete,oracledeletetable,oracle数据库,oracle数据库下载,oracle数据库教程,oracle数据库备份,java连接oracle数据库,oracle创建数据库,oracle数据库安装教程

delete数据不会回收已经分配出去的block(也就是delete前后你查看user_segments中的信息不会有改动)。 但这时你对表执行analyze后查看dba_tables表的话会发现empty_block数目变大或者avg_space数据变小。 如果你希望减少该table占用的实际block数目, 你需要使用move操作将table重建,oracle才会重新分配block,这时table上的索引会失效,需要rebuild。 一,创建测试环境 1.1 创建测试表,为其插入16万条记录 create table jax_t11 as select * from dba_objects where rownum = 10000; insert into jax_t11 select * from jax_t11; commit; insert into jax_t11 select * from jax_t11; commit; insert into jax_t11 select * from jax_t11; commit; insert into jax_t11 select * from jax_t11; commit; 1.2 创建索引 create index idx_jax_t11_01 on jax_t11(owner,object_name,created); 1.3 分析表及索引 begin dbms_stats.gather_table_stats ( ownname = user, -- 表的拥有者 tabname = upper(jax_t11), -- 表名称 method_opt = for all indexed columns size 1, -- 获得所有索引列的柱状图 cascade = TRUE ); -- 级联获取 indexes的统计信息 end; 1.4 查看表占用空间大小 select segment_name,segment_type,bytes/1024/1024 from dba_segments ds where ds.segment_name in ( JAX_T11, upper(idx_jax_t11_01)); SEGMENT_NAME SEGMENT_TYPE BYTES/1024/1024 JAX_T11 TABLE 17 IDX_JAX_T11_01 INDEX 9 这里我们可以看到,表占空间17M,索引占空间9M; 表空间占用明细 SELECT table_name,tablespace_name, num_rows, -- 记录行数 avg_row_len, --平均行长度 blocks, avg_space, empty_blocks from user_tables ut where ut.table_name = JAX_T11 TABLE_NAME TABLESPACE_NAME NUM_ROWS AVG_ROW_LEN BLOCKS AVG_SPACE EMPTY_BLOCKS JAX_T11 DRP_DATA 160000 100 2146 0 0 索引空间占用明细 SELECT index_name,table_name,leaf_blocks,distinct_keys,num_rows from user_indexes ut where ut.index_name = upper(idx_jax_t11_01) INDEX_NAME TABLE_NAME LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS IDX_JAX_T11_01 JAX_T11 1036 9832 160000 二,删除90%的记录后的空间占用 2.1 删除90%的记录 delete from jax_t11 where rowid in (select r1 from (select rowid r1, mod(rownum, 100) r2 from jax_t11) t where r2 = 90); commit; 2.2 分析表及索引 begin dbms_stats.gather_table_stats ( ownname = user, -- 表的拥有者 tabname = upper(jax_t11), -- 表名称

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档