Oracle 如何提高空间使用率?

news2025/1/11 23:02:21

一,行迁移和行链接。

oracle尽量保证一行的数据能够放在同一个数据块当中,有的时候行会发生行迁移和行链接。

行链接 :有一个列的字段是大对象(long,longlong)一行占的数据一整个块都放不下,则oracle会把这行的数据分为两部分或多部份,存放到不同的数据块,这种现象叫做行链接。

行链接的缺陷显而易见,原本我只需要找到一个块就能找到所有数据,现在可能读更多的块才能够找到数据,增加了io。

行迁移:原本的行在一个数据块中,如果我们在这一行进行了update操作,使得这一行的尺寸变大了

oracle在默认情况下,如果这一行发生了增长,所需的多余空间会从这个块的可用空间里面去获取,这是最好的情况。但是如果这个块可用的空间用满了,则会发生行迁移。oracle会把这一行的数据迁移到一个新的数据块,但是在原来的块中会保留它的row id。

缺陷也是如此,原来只需要一次io,现在需要两次io,降低了性能。

二,自动段空间管理(Auto Segment Space Management)

简称ASSM

段是oracle管理空间的一种机制

如果表空间是自动管理的,则会用到位图管理机制。

BMB(bitmap blocks) 在一个段中会有很多个位图块,在位图中记录了对应块的信息,如(剩余空间,可用空间,这个机制使得管理更加灵活)

总结一下就是:我们给段分配很多数据块,oracle会拿出一些数据块来记录这些数据块的使用情况,这些数据块叫做:BMB(位图块)。

三,oracle表空间分配类型

主要分为两种方式:1.uniform(固定分配)。2.autoallocate(自动分配)

示例:

自动分配:

固定分配:

四,使用 unusable索引

如果把一个索引变成unusable,oracle会把这个索引段删掉,但是保留索引的定义,节省了空间,以后需要时可以用rebuild重建索引。

五,使用临时表

临时表只有在事务和会话过程中存在数据。

如果我们以后为了测试。表中的数据有没有无所谓,我们可以基于有数据的表建一个临时表,我们在临时表上面进行测试,退出会话时oracle会把这个临时表删掉。

临时表有两种类型:

Global:建的临时表的定义所有的会话都可见,内容只有创建临时表的会话看得见,其它会话不可见

Private:只有创建临时表的会话可见,其它会话不可见。

临时表的段只有在进行第一次insert操作时才会分配,

创建全局临时表:

插入数据后当前会话可见,其它会话不可见。

on commit delete 关键字:当事务提交,临时表数据全部删除。

创建私有临时表:

注意:私有临时表 ,表名必须以  ORA$PTT_开头。

私有表前缀由private_temp_table_prefix 指定,可以自己指定

六,表压缩

1.Basic table compression(基础压缩) 压缩率:10倍

2.Advanced row compression(高级行压缩) 压缩率:2-4倍

压缩原理:

Basic table compression 当可用空间 是0 时触发压缩。

Advanced row compression 当可用空间 剩余10% 触发压缩

例如:数据块可用空间只剩下百分十10,触发压缩,把原来块的数据进行压缩,腾出来一部分空间来存放新的数据,再进行insert操作后,可用空间又只剩下百分十10,再一次进行压缩。

总结:oracle的压缩原理是逐步压缩。

basic压缩:

空间大小比较:

注意如果使用 basic压缩方式   使用insert方式进行插入则不会进行压缩。

高级行压缩:

不压缩,插入数据十次:

 insert into EMP_NOCMP select * from emp_nocmp; (重复 10 次)

高级行压缩,插入数据十次:

insert into EMP_CMP select * from emp_cmp; (重复 10 次)

所占空间对比:

比较清晰,高级行压缩所占空间明显减少。

表压缩缺陷:

打开计时器,对表进行update操作,比对压缩表和非压缩表效率:

可见非压缩表 update性能明显高于压缩表。

七,通过 shringking 操作回收空间

只能对段空间管理方式为ASSM方式的表空间使用。

如果块中发生大量的delete操作,导致块中的行不紧凑,浪费了大量块空间,我们可以通过shringking 操作回收空间,降低高水位线,从而高水位线以上的块就会被回收。

示例:创建一个表,表空间段空间管理为自动管理,即ASSM,插入十五次数据。

insert into emp_shr select * from emp_shr;(执行15次)

查看数据字典,该表占用空间情况:

进行删除操作,导致出现空闲空间。

让表允许移动行,否则无法使用shrink:

对表进行shrink整理,查看数据字典。

发现此时空间并没有被释放,原因是我们的高水位线并没有变低,只是把行变的紧凑了,没有块被oracle自动回收。

改变高水位线,让高水位线以上的空闲块被oracle回收。

此时,查看数据字典。

八,可恢复空间分配。

Oracle 数据库服务器提供了一种暂停和稍后恢复执行的方法空间分配失败时的大型数据库 操作。

简而言之:假如我们的表空间大小不够了,正常来说会直接报错,假如我们执行了两个小时的inert操作,到最后因为表空间大小不足而导致操作失败就很崩溃,所以oracle允许我们有补救措施。

resumable_timeout = 300;

假如我们的操作因为表空间大小不足,设置这个参数后不会立即报错,而是会把这个事务挂起,在300s中,如果我们有补救措施,如resize表空间,增加了数据文件,使得表空间足够进行接下来的操作,该操作将继续进行。

如果300s之内没有补救,才会报错,该操作失败。

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

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

相关文章

如何在Excel中冻结行或列标题?这里提供两种方法

随着数据的增长,许多Excel工作表可能会变得很大,因此冻结行和列标题或冻结窗格非常有用,以便在滚动工作表时将标题锁定到位。在Excel中,可以冻结行标题和列标题,也可以只冻结一个。这不会影响将要打印的单元格。列标题…

力扣精选算法100道——提莫攻击(模拟专题)

目录 🚩题目解析 🚩算法原理 🚩实现代码 🚩题目解析 输入:timeSeries [1,4], duration 2 输出:4 解释:提莫攻击对艾希的影响如下: - 第 1 秒,提莫攻击艾希并使其立即…

Jenkins 2.426.3新版设置中文

1. 插件页面显示无法联网 ,点击Plugins一直提示连接超时,设置公司代理后 2. 稍等一会儿点击如下图,插件就出来了,然后输入Locale进行下载 3. 以下是我下载安装好的 4.打开设置,找到Locale选项,设置成zh_CN…

域名 SSL 证书信息解析 API 数据接口

域名 SSL 证书信息解析 API 数据接口 网络工具,提供域名 SSL 证书信息解析,多信息查询,毫秒级响应。 1. 产品功能 提供域名 SSL 证书信息解析;最完整 SSL 属性信息解析;支持多种元素信息抽取,包括主题的可…

keepalived双主模式测试

文章目录 环境准备部署安装keepavlived配置启动测试模拟Nginx宕机重新启动问题分析 环境准备 测试一下keepalived的双主模式,所谓双主模式就是两个keepavlied节点各持有一个/组虚IP,默认情况下,二者互为主备,同时对外提供服务&am…

Ps:颜色表

Ps菜单:图像/模式/颜色表 Image/Mode/Color Table 使用颜色表 Color Table命令可以查看和更改“索引颜色”模式下图像使用的颜色表。 ◆ ◆ ◆ 使用方法与技巧 通过“颜色表”对话框,可以编辑颜色表中的颜色以产生特殊效果,或者将图像中的透…

web安全学习笔记【12】——信息打点(2)

信息打点-Web应用&源码泄漏&开源闭源&指纹识别&GIT&SVN&DS&备份 #知识点: 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源…

vue 非父子通信-event bus 事件总线

1.作用 非父子组件之间,进行简易消息传递。(复杂场景→ Vuex) 2.步骤 创建一个都能访问的事件总线 (空Vue实例) import Vue from vue const Bus new Vue() export default Bus A组件(接受方),监听Bus的…

钉钉小程序 访问ip不在白名单之中

钉钉小程序 访问ip不在白名单之中 problem 钉钉官方自带免登陆小程序 后端接口报错 {"errcode":60020,"errmsg":"访问ip不在白名单之中,请参考FAQ:https://open.dingtalk.com/document/org-faq/app-faq,request ip175.2.2.52…

开源软件的利弊

目录 开源软件 优势 免费 透明 可更改 可协作 影响力 坏处 安全隐患 良莠不齐 学习成本 持续性问题 未知风险 开源软件 开源软件是一种基于开放协作和共享的软件开发模式,其利弊对于软件产业和社会发展具有重要意义 优势 免费 谁能拒绝不要钱的东西…

SQL-2

刷题知识点: null不能用这种判断,要用is null 或者is not null 或者可用 ifnull来判断。 明确:数据库DB是数据存储仓库。 数据库管理系统(Database management system,DBMS),是操纵和管理数据库…

AI之Sora:Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略

AI之Sora:Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略 导读:Sora 是OpenAI研发的一个可以根据文字描述生成视频的AI模型。它的主要特性、功能以及OpenAI在安全和应用方面的策略的核心要点如下所示&a…

亚马逊鲲鹏系统一键注册亚马逊买家号的软件

在如今的电商世界中,自动注册亚马逊买家号已经成为了一种必要的操作需求。为了规避关联性问题,许多用户选择借助专门设计的软件工具,其中最为流行的就是亚马逊鲲鹏系统。这款软件以其自带防指纹浏览器和全自动化操作功能而闻名。 亚马逊鲲鹏系…

[Angular 基础] - 自定义指令,深入学习 directive

[Angular 基础] - 自定义指令,深入学习 directive 这篇笔记的前置笔记为 [Angular 基础] - 数据绑定(databinding),对 Angular 的 directives 不是很了解的可以先过一下这篇笔记 后面也会拓展一下项目,所以感兴趣的也可以补一下文后对应的项…

齐次方程是否有非零解,和它的系数矩阵行列式的关系 (done)

视频来源:https://www.bilibili.com/video/BV1vY4y1J7gd/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 4:22 有这么一句话,如下图 对于齐次方程,若系数矩阵的行列式为零,则方程…

常见消息中间件分享

文章目录 概念核心角色作用&使用场景应用解耦异步通信削峰填谷大数据流处理 使用模型点对点模型发布-订阅模型 常见消息中间件介绍一、kafka二、RabbitMQ三、RocketMQ 比较一、Kafka如何实现高吞吐量二、RocketMQ如何实现事务消息 概念 消息中间件是基于队列与消息传递技术…

14. rk3588自带的RKNNLite检测yolo模型(python)

首先将文件夹~/rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/下的文件librknnrt.so复制到文件夹/usr/lib/下(该文件夹下原有的文件librknnrt.so是用来测试resnet50模型的,所以要替换成yolo模型的librknnrt.so),如下图所示&am…

【办公类-16-07-03】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环、有场地、贴墙版”(python 排班表系列)

作品展示——有场地说明 背景需求: 前期做了一份“贴周计划”用的班主任版的户外游戏安排表(中X班19周,没有场地) 【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环”(…

击败.helper勒索病毒:恢复被加密的数据文件的方法

导言: 近年来,勒索病毒成为网络安全领域的一大威胁,其中.helper勒索病毒更是备受关注。该类型的勒索软件以其高效的加密算法,能够将用户的文件加密,迫使用户支付赎金才能解密数据。本文将介绍.helper勒索病毒的特点、恢复被加密数…

unity学习(30)——跳转到角色选择界面(跳转新场景)

1.在scene文件夹中([siːn]),右键->create->scene,名字叫SelectMenu(选择角色场景)。 2.把新建场景拖拽到hierarchy[ˈhaɪərɑːki]中。 3.此时才能在file->build setting中Add open scene&…