Oracle 收缩表高水位线

Oracle 收缩表高水位线节省空间

1、模拟在一张表中插入数据并收集统计信息
SQL> create table ahern.test as select * from dba_objects;

表已创建。

SQL> insert into ahern.test select * from ahern.test;

已创建 72974 行。

SQL> insert into ahern.test select * from ahern.test;

已创建 145948 行。

SQL> insert into ahern.test select * from ahern.test;

已创建 291896 行。

SQL> commit;

提交完成。

SQL> exec dbms_stats.gather_table_stats(ownname => 'AHERN',tabname => 'TEST',DEGREE  => 2);

PL/SQL 过程已成功完成。

查询空间情况,可以看到初始表的碎片为 75254.44。
SQL> SELECT table_name,
  2         ROUND((blocks * 8), 2) "HW_space",
  3         ROUND((num_rows * avg_row_len / 1024), 2) "real_space",
  4         ROUND((blocks * 10 / 100) * 8, 2) "pctfree",
  5         ROUND((blocks * 8 - (num_rows * avg_row_len / 1024) -
  6               blocks * 8 * 10 / 100),
  7               2) "waste_space"
  8    FROM dba_tables
  9   WHERE temporary = 'N'
 10     AND TABLE_NAME = 'TEST'
 11     and OWNER = 'AHERN';

TABLE_NAME HW_space  real_space  pctfree waste_space
---------- ---------- ------------ ----------- -------------
TEST            97352     75254.44      9735.2      12362.36

2、第一次删除数据
SQL> delete from ahern.test where object_type in ('SYNONYM', 'JAVA CLASS');

已删除 391224 行。

SQL> commit;

提交完成。

SQL> exec dbms_stats.gather_table_stats(ownname => 'AHERN',tabname => 'TEST',DEGREE  => 2);

PL/SQL 过程已成功完成。

注:第一次删除了部分数据后查询空间水位线情况,可以看到表的碎片为 23318.78。
SQL> SELECT table_name,
  2         ROUND((blocks * 8), 2) "HW_space",
  3         ROUND((num_rows * avg_row_len / 1024), 2) "real_space",
  4         ROUND((blocks * 10 / 100) * 8, 2) "pctfree",
  5         ROUND((blocks * 8 - (num_rows * avg_row_len / 1024) -
  6               blocks * 8 * 10 / 100),
  7               2) "waste_space"
  8    FROM dba_tables
  9   WHERE temporary = 'N'
 10     AND TABLE_NAME = 'TEST'
 11     and OWNER = 'AHERN';

TABLE_NAME HW_space  real_space  pctfree  waste_space
---------- ---------- ------------ ----------- -------------
TEST            97352     23318.78      9735.2      64298.02

3、第二次删除数据
SQL> delete from ahern.test where object_type in('VIEW','INDEX','TABLE','TYPE');

已删除 123824 行。

SQL> commit;

提交完成。

SQL> exec dbms_stats.gather_table_stats(ownname => 'AHERN',tabname => 'TEST',DEGREE  => 2);

PL/SQL 过程已成功完成。

注:第二次删除大量数据后查询表的碎片为 8525.87,从这里对比第一次删除数据后的空间使用情况可以看到浪费的空间一直在增加,从第一次删除数据到第二次删除数据,浪费的空间增加倒到了 79090.93,并且高水位线一直没有变化为 97352。
SQL> SELECT table_name,
  2         ROUND((blocks * 8), 2) "HW_space",
  3         ROUND((num_rows * avg_row_len / 1024), 2) "real_space",
  4         ROUND((blocks * 10 / 100) * 8, 2) "pctfree",
  5         ROUND((blocks * 8 - (num_rows * avg_row_len / 1024) -
  6               blocks * 8 * 10 / 100),
  7               2) "waste_space"
  8    FROM dba_tables
  9   WHERE temporary = 'N'
 10     AND TABLE_NAME = 'TEST'
 11     and OWNER = 'AHERN';

TABLE_NAME HW_space  real_space  pctfree  waste_space 
---------- ---------- ------------ ----------- -------------
TEST            97352      8525.87      9735.2      79090.93

4、模拟整理碎片节省空间
开始收缩水位线整理碎片:
SQL> alter table ahern.test enable row movement;

表已更改。

SQL> alter table ahern.test shrink space;

表已更改。

SQL> exec dbms_stats.gather_table_stats(ownname => 'AHERN',tabname => 'TEST',DEGREE  => 2);

PL/SQL 过程已成功完成。

注:通过上述收缩进行表碎片整理后,我们可以看到表的高水位已经降下来为 10120,并且浪费的空间也已经被释放,释放前 79090.93 ,释放后占用仅为 582.13。
SQL> SELECT table_name,
  2         ROUND((blocks * 8), 2) "HW_space",
  3         ROUND((num_rows * avg_row_len / 1024), 2) "real_space",
  4         ROUND((blocks * 10 / 100) * 8, 2) "pctfree",
  5         ROUND((blocks * 8 - (num_rows * avg_row_len / 1024) -
  6               blocks * 8 * 10 / 100),
  7               2) "waste_space"
  8    FROM dba_tables
  9   WHERE temporary = 'N'
 10     AND TABLE_NAME = 'TEST'
 11     and OWNER = 'AHERN';

TABLE_NAME HW_space  real_space  pctfree  waste_space
---------- ---------- ------------ ----------- -------------
TEST            10120      8525.87        1012        582.13

到此,表碎片整理结束。
注意:如需在生产环境中做表碎片整理,建议在业务空闲期间进行,避免影响业务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 短文本匹配,短文本语义相似度,基于大模型的短文本匹配,基于LLMs的短文本语义相似度识别,短文本语义扩充和匹配

1.任务描述 之前在做疾病相似度匹配的时候,堪称史诗级难题,虽然最后加上规则以及一些nlp模型,取得了差强人意的效果,但是短文本的语义相似度匹配一直属于比较难以攻克的难题 2.思路 随着近年大模型的飞速发展,就之前…

链表题目练习----重排链表

这道题会联系到前面写的一篇文章----快慢指针相关经典问题。 重排链表 指针法 这道题乍一看,好像有点难处理,但如果仔细观察就会发现,这道题是查找中间节点反转链表链表的合并问题,具体细节有些不同,这个在反装中间链…

mysql数据备份和还原知识点

MySQL 数据备份和还原是数据库管理的关键操作,确保数据的安全性和可恢复性。 以下是关于MySQL备份和还原的一些关键知识点: 1、数据备份 1.1、mysqldump工具: mysqldump 是MySQL提供的一个命令行实用程序,用于创建数据库或表的结构以及数据…

【Web API DOM11】节点操作

一:DOM节点 1 什么是DOM节点 DOM树里每一个内容都称为节点 2 DOM节点分类 元素节点 属性节点:a标签的href、img标签的src等 文本节点:标签中的文字 上图为整个DOM树,每个标签、以及标签属性、文本内容构成了DOM树 二&#…

现代社区管理中的电瓶车违停检测技术

随着城市化进程的加快,电瓶车作为一种环保、便捷的出行工具在社区内的使用越来越普及。然而,电瓶车的随意停放问题也日益严重,影响了社区的整体环境和居民的生活质量。为了解决这一问题,社区管理者迫切需要一种高效、准确的电瓶车…

54、二分图的最大匹配

二分图的最大匹配 题目描述 给定一个二分图,其中左半部包含n1个点(编号1n1),右半部包含n2个点(编号1n2),二分图共包含m条边。 数据保证任意一条边的两个端点都不可能在同一部分中。 请你求出…

从list的模拟实现中了解迭代器的设计方式

欢迎来到博主的专栏:c杂谈 博主ID:代码小豪 文章目录 迭代器——容器与算法的桥梁容器与迭代器算法与迭代器迭代器总结 迭代器——容器与算法的桥梁 如果你尝试使用过STL,那么一定对迭代器不感到陌生,迭代器作为STL六大组件之一&…

QT 创建文件 Ui 不允许使用不完整类型,可以尝试添加一下任何头文件

#include "debug.h" #include "qmessagebox.h" #pragma execution_character_set("utf-8") //QT 创建文件 Ui 不允许使用不完整类型,尝试添加一下任何头文件,或者添加ui_xx.h头文件 debug::debug(QWidget *parent) : QDialog(p…

Kotlin getter 和 setter

文章目录 定义field 字段(Backing Fields) 定义 我们可以为变量定义get(无参数,有与变量同类型的放返回值)或set(有一个与变量类型相同的参数,返回Unit)函数,在取值&…

【MATLAB源码-第224期】基于matlab的快跳频系统仿真采用4FSK,模拟了单音干扰,宽带干扰以及部分频带干扰,输出误码率曲线以及各节点图像。

操作环境: MATLAB 2022a 1、算法描述 跳频通信系统概述 跳频通信系统是一种通过快速切换载波频率来进行信息传输的无线通信技术。它在军事和商业通信中广泛应用,具有较强的抗干扰和抗截获能力。系统设计主要包括信号调制、跳频序列生成、信道模拟以及…

dart 基本语法

//入口方法 main() 或 void main() //数据类型 原生数据类型 String int double bool null 注意:String 包函 ‘’ “” ‘’’ ‘’’ 三种形式复杂数据类型 list Set Map自定义数据类型 class inheritance动态数据类型 var 注:dart 是静态类型语言&a…

【Linux】Centos7升级内核的方法:yum更新(ELRepo)

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

Proxyman 现代直观的 HTTP 调试代理应用程序

Proxyman 是一款现代而直观的 HTTP 调试代理应用程序,它的功能强大,使您可以轻松捕获、检查和操作 HTTP(s) 流量。不再让繁杂的网络调试工具阻碍您的工作,使用 Proxyman,您将轻松应对网络调试的挑战。 下载地址:https…

springboot undertow 文件上传文件过大异常

io.undertow.server.RequestTooBigException: UT000020 Connection terminated as request was larger than xxxx 修改yaml文件中关于undertow的配置项 server:undertow:# HTTP POST请求最大的大小# 默认0,无限制max-http-post-size: ${SERVER_UNDERTOW_MAX_HTTP_…

Elasticsearch 认证模拟题 - 10

一、题目 在索引 task8 中,写出满足以下条件的查询 title 中包含 my"或 me如果 tags 中包含 romatic movies,该条算分提高,如果不包含则算分不变。 PUT task8 {"mappings": {"properties": {"title":{…

Apple开发者macOS设备与描述文件Profile创建完整过程

安装并打开Apple Configurator 新建描述文件 输入macOS平台的描述文件的相关信息,然后选择证书 选择一个可用证书 存储描述文件 存储成功如下: 使用文本编辑器打开刚才保存的描述文件,找到设备名与UDID

Day12:rem 布局 和 less 使用

目标:使用 rem 和 less 完成移动端的布局。 一、移动 Web 基础 1、谷歌模拟器 在网页右键点“检查”或快捷键 F12,然后右边栏顶部第二个按钮切换设备为移动端,刷新网页,可以看到谷歌模拟器,可以切换模拟器型号、尺寸…

[已解决]ESP32-C3上传程序成功但没有反应的问题

ESP32-C3上传程序成功但没有反应的问题 ESP32-C3是一款功能强大的微控制器,常用于物联网(IoT)应用的开发和原型设计。然而,有时候在上传程序成功后,设备却没有任何反应,十分让人费解。通过各种尝试已解决这…

华为设备动态路由OSPF(单区域+多区域)实验

动态路由OSPF的配置 OSPF分类两种情况:单区域 多区域路由 OSPF单区域路由配置 OSPF:开放最短路径优先的路由协议。属于大型动态路由协议,适用于中大型的园区网。 网络拓扑: 配置步骤: 1.完成基本配置(略&a…

《传感器系列》COD 传感器

环境监测小卫士:COD 传感器,能够精准检测化学需氧量。对于水质监测和环境保护有着至关重要的作用! 优势解析: 一、实时监测与快速响应 COD传感器能够实现实时监测和快速响应,这是其最大的优势之一。传统的COD测定方法…