证明TRUNCTE后空间重用

简介: 原创 转载请注明出处 下面的例子只是证明空间的重用 create table ppasselect * from dba_tables,dba_users;execute dbms_stats.

原创 转载请注明出处

下面的例子只是证明空间的重用

create table pp
as
select * from dba_tables,dba_users;
execute dbms_stats.gather_table_stats(ownname => 'SYS',tabname => 'pp');
SQL> select BLOCKS from dba_tab_statistics where table_name='PP' and wner='SYS';
BLOCKS
-----------
1513
SQL> select min(BLOCK_ID) from dba_extents where SEGMENT_NAME='PP' and wner='SYS';

MIN(BLOCK_ID)
-------------
        66073
SQL> select max(BLOCK_ID) from dba_extents where SEGMENT_NAME='PP';

MAX(BLOCK_ID)
-------------
        67977
SQL> select BLOCK_ID+BLOCKS from dba_extents where SEGMENT_NAME='PP' and wner='SYS' and  BLOCK_ID= 67977;

BLOCK_ID+BLOCKS
---------------
          68105
所以占用空间块区间是66073到68105
然后截断表
SQL> truncate table pp;
SQL> execute dbms_stats.gather_table_stats(ownname => 'SYS',tabname => 'pp');

PL/SQL procedure successfully completed
SQL> select min(BLOCK_ID) from dba_extents where SEGMENT_NAME='PP' and wner='SYS';

MIN(BLOCK_ID)
-------------
        66073
SQL> select max(BLOCK_ID) from dba_extents where SEGMENT_NAME='PP';

MAX(BLOCK_ID)
-------------
        66073
实际这些只是占用了一个EXTENT,但是下一个分区却是从66097开始的,我也不知道为何是SEGMENTS头的原因吧。这时的区间而66073到66097,当然HWM也下降了,使用的块为0
然后
SQL> create table oo
  2  as
  3  select * from dba_tables,dba_users;
SQL> select min(BLOCK_ID) from dba_extents where SEGMENT_NAME='OO' and wner='SYS';

MIN(BLOCK_ID)
-------------
        66097
SQL> select MAX(BLOCK_ID) from dba_extents where SEGMENT_NAME='OO' and wner='SYS';

MAX(BLOCK_ID)
-------------
        67977
这里OO的区间实际是66097到67977+128。
这里明显重用的空间。基本都重用了。
所以TRUNCATE的空间是会被新的段运用的

相关文章
|
存储 缓存 Oracle
常识四堆外内存
常识系列,作为一名互联网门外汉的科普系列 堆外内存除了在像netty开源框架中,在平常项目中使用的比较少,在现前的项目中,QPS要求高的系统中,堆外内存作为其中一级缓存是相当有成效的。所以来学习一下,文中主要涉及到这三分部内容 1. 堆外内存是什么?与堆内内存的区别 2. 怎么分配,与GC的影响 3. 开源框架使用 这篇文章写到最后,发现还只是回答了开源框架OHC的Why not use ByteBuffer.allocateDirect()?
1364 1
常识四堆外内存
|
4月前
|
算法
时间(空间)复杂度(结构篇)
时间(空间)复杂度(结构篇)
42 6
|
5月前
软件复用问题之衡量是否应该复制或复用代码,如何解决
软件复用问题之衡量是否应该复制或复用代码,如何解决
|
6月前
|
存储 Swift
Swift开发——弱占用
Swift的自动引用计数(ARC)管理类实例内存,通过强引用保持实例存活。当出现强引用循环时,可使用`weak`关键字创建弱引用,避免阻止实例释放。弱引用在不再被强引用时导致对象立即释放。示例中,添加`weak`至`author`和`book`变量防止引用循环,使得两者析构器均执行,释放内存。图2展示了弱引用结构,当解除所有强引用后,ARC自动释放实例,调用析构器。
210 1
Swift开发——弱占用
|
机器学习/深度学习 PyTorch 算法框架/工具
降龙十八掌:这套优化transformer内存占用的组合技值得收藏(1)
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
321 0
|
存储 PyTorch 测试技术
降龙十八掌:这套优化transformer内存占用的组合技值得收藏(2)
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
354 0
|
机器学习/深度学习 存储 PyTorch
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
244 0
|
存储 C语言
内存的读写过程、现实模型及指针
内存的读写过程、现实模型及指针
158 0
内存的读写过程、现实模型及指针
|
BI Python
条件独立5条重要性质及其证明
本文给出了条件独立5条重要性质及其证明
241 0
条件独立5条重要性质及其证明
|
安全 Java API
了解程序运行逻辑的必要性及应用和硬件的关系
了解程序运行逻辑的必要性及应用和硬件的关系
117 0