【oracle】oracle索引分裂

news2024/11/25 6:32:48

本文为云贝教育 刘峰 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。

一、索引分裂概述

Oracle数据库中的索引分裂是数据库维护和性能管理中的一个重要概念,特别是在处理大量数据插入、更新和删除操作时。索引分裂发生的原因、类型以及对数据库性能的影响如下:

1.1 索引分裂的原因

索引分裂主要发生在以下场景:

  • • 插入操作:当向已满或接近满的索引块中插入新记录时,如果该块没有足够的空间容纳新数据,索引就需要分裂来创造额外的空间。
  • • 更新操作:如果更新导致索引项的大小变化,以至于原块无法容纳,则可能触发索引块的分裂。
  • • 删除操作:虽然删除通常不会直接导致索引块分裂,但在某些情况下,删除后留下的空间碎片可能需要通过索引重组或合并来优化。
1.2 索引分裂的类型

索引分裂主要有三种基本类型:

  1. 1. 叶节点分裂(Leaf Node Split):这是最常见的类型,当索引叶子节点(存储实际索引值的块)没有足够的空间来容纳新的索引条目时,叶子节点会被分裂成两个或更多块。大多数情况下,分裂是90-10或50-50的比例,即原块的一部分数据迁移到新块,其余数据保留在原块。
  2. 2. 枝节点分裂(Branch Node Split):当索引的枝节点(连接叶子节点的中间层块)满载时,也会发生分裂,以容纳更多的分支。
  3. 3. 根节点分裂(Root Node Split):虽然较为罕见,但当根节点需要更多空间来存储指向枝节点的指针时,根节点也可能分裂,这通常伴随着索引层次的增加。
1.3 对性能的影响
  • • 性能下降:索引分裂会导致额外的I/O操作,增加数据库的写操作负担,可能会暂时降低查询性能。
  • • 空间碎片:频繁的分裂会导致索引结构中出现碎片,影响索引扫描效率。
  • • 维护成本:索引分裂需要数据库自动维护,增加了系统资源的消耗。

二、索引分裂验证

实验环境: oracle 19c

2.1 基础环境准备

切换到pdb,创建一张带主键的表

2.2 查看表头信息

2.3 查看当前表和索引的分配的区

表和索引都分配了1个区,每个区有8个块。

2.4 查看当前索引分裂的情况

由于当前数据库刚启动,所以没有块分裂。

2.5 跟踪块分裂

通过10224事件跟踪块分裂

分析trace

2.6 查看表和索引占用的块数

可以看到表和索引都

2.7 查看录入数据之后表和索引的分配的区

2.8 查看当前索引分裂的情况

观察到插入数据之后,产生了92次索引叶子块分裂,且分裂类型均为9-1单边分裂类型。

三、数据分析

结论:

  • • 从索引的分裂情况来看,在录入数据之前,索引PK_ID分配了一个区,这个区有8个块,但实际上只使用了一个块
  • • 在录入数据之后,索引的的分区有12个,共96个块,也就是说,索引最多扩展95(96-1)次。
  • • 从trace分析和v$sysstat视图可以确认,由于录入的数据是有序的,分裂了92次均为leaf node 90-10 splits类型。

四、思考

1. 出现严重的索引分裂会带来什么样的问题?又是如何解决?

2. 什么情况下会出现50-50 splits类型的索引分裂?

在下一篇文章中,我们再揭幕。

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

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

相关文章

TikTok达人合作ROI分析:品牌如何评估带货效果

在当今的数字营销时代,TikTok已经成为品牌推广和消费者互动的重要平台。通过与TikTok达人的合作,品牌可以有效地提升其市场影响力和销售额。其中,评估这些合作的投入产出比(ROI)对于品牌来说是至关重要的。本文Nox聚星…

生命在于学习——Python人工智能原理(2.4.2)

四、Python的程序结构与函数 4.4 函数 函数能将代码划分为若干模块,每一个模块可以相对独立的实现某一个功能,函数有两个主要功能,分别是降低编程难度和实现代码复用,函数是一种功能抽象,复用它可以将一个复杂的大问…

JavaScript的学习之图片的切换

目录 一、寻找素材 二、编写简单的静态html页面 代码示例 效果展示 三、JS功能的实现 JS代码 完整代码 效果展示 一、寻找素材 随便去网上找几张图片素材 二、编写简单的静态html页面 代码示例 <!doctype html> <html><head><meta charset"…

【SpringBoot】SpringBoot使用mail实现登录邮箱验证

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、前期准备 1 开启邮箱服务 2 SpringBoot导入依赖 3 创建application.yml配置文件 4 创建数据库文件 5 配置redis服务 二、验证邮件发送功能 三、注册功能实现邮箱验证 1 创建User实体类 2 创建UserPa…

基于SpringBoot+vue闲置物品交易网站详细设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

ueditor解决无法抓取远程背景图片问题的方法(php)

背景 laravel后台经常有用到编辑器的地方&#xff0c;Dcat使用的一般都是UEditor编辑器。最近项目经理在秀米排版以后&#xff0c;将内容复制到UEditor编辑器保存后发现&#xff0c; 在网站页面中发现图片竟然展示失败。经过浏览器控制台发现&#xff0c;图片的域名还是秀米的…

LICEcap-开源GIF 屏幕录制工具

LICEcap-开源GIF 屏幕录制工具 开源GIF 屏幕录制工具 下载可以访问&#xff1a;https://www.cockos.com/licecap/ 点击Record&#xff0c;开始录制 点击Stop&#xff0c;停止录制 点击Record&#xff0c;进入该页面 display in animation&#xff08;在动画中显示&#xff09; …

【Python机器学习】自动化特征选择——单变量统计

添加更多特征会使所有的模型变得更加复杂&#xff0c;从而增大过拟合的可能性。 在添加新特征或处理一般的高位数据集时&#xff0c;最好将特征的数量减少到只包含最有用的那些特征&#xff0c;并删除其余特征&#xff0c;这样会得到泛化能力更好、更简单的模型。 对于如何判…

秋招倒计时?到底需要准备到什么程度?

秋招倒计时&#xff1f;需要准备到什么程度&#xff1f; 秋招&#xff0c;面向全国的毕业生&#xff0c;招聘的激烈程度可想而知&#xff01;按照往年时间&#xff0c;秋招通常从八月初开始&#xff0c;九月黄金期&#xff0c;十月中后期。距今刚好差不多60天&#xff0c;时间其…

堡垒机软件详细定义以及部分厂商汇总

随着大家对网络安全的重视&#xff0c;越来越多的企业开始采购堡垒机。堡垒机可以分为硬件堡垒机、软件堡垒机、软硬一体机。今天我们就来聊聊堡垒机软件详细定义以及部分厂商汇总。 堡垒机软件详细定义 堡垒机软件&#xff0c;又称为运维安全审计系统&#xff0c;其主要功能在…

算子级血缘和血缘查询管理

数据链路 血缘关系 应用场景&#xff1a;数据资产&#xff0c;数据开发&#xff0c;数据治理&#xff0c;数据安全等等 &#xff08;绿色箭头上面是数据治理&#xff09; 场景&#xff1a; 数据链路的高效盘点与理解 数仓模型的长效优化机制 风险影响的及时全面分析 重复…

Linux通用系统高危漏洞(CVE-2024-1086)修复案例

一、漏洞描述 2024年3月28日&#xff0c; Linux kernel权限提升漏洞&#xff08;CVE-2024-1086&#xff09;的PoC/EXP在互联网上公开&#xff0c;该漏洞的CVSS评分为7.8&#xff0c;目前漏洞细节已经公开披露&#xff0c;美国网络安全与基础设施安全局&#xff08;CISA&#x…

npm install报错Maximum call stack size exceeded

npm 报错 方案&#xff1a; npm cache clean --force npm install

【专业性强】地球科学SCI期刊,中科院2区,学术影响力大

一、期刊名称 GIScience & Remote Sensing 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;地球科学 影响因子&#xff1a;6.7 中科院分区&#xff1a;2区 三、期刊征稿范围 GIScience & Remote Sensing是一本完全开放获取的期刊&#xff0c;发表…

Java基础知识整理笔记

目录 1.关于Java概念 1.1 谈谈对Java的理解&#xff1f; 1.2 Java的基础数据类型&#xff1f; 1.3 关于面向对象的设计理解 1.3.1 面向对象的特性有哪些&#xff1f; 1.3.2 重写和重载的区别&#xff1f; 1.3.3 面向对象的设计原则是什么&#xff1f; 1.4 关于变量与方…

约课健身管理系统小程序源码

健身达人的智能助手 一款基于FastAdminThinkPHPUniapp开发的米扬约课健身管理系统&#xff0c;应用于健身房&#xff0c;健身工作室&#xff0c;运动会所&#xff0c;运动场馆&#xff0c;瑜伽馆&#xff0c;拳馆等泛健身行业的场馆中。米扬约课健身致力于为各种健身场馆打造真…

数学类-课程资料推荐-中科大教师首页

http://staff.ustc.edu.cn/~rui/cn/rui-course.html 数学分析讲义&#xff08;第一册&#xff09; (ustc.edu.cn)

C# 入门—基本语法

一、数据类型 C# 语言中内置了一些基本的数据类型&#xff0c;数据类型用来指定程序中变量可以存储的数据的类型&#xff0c;C# 中的数据类型可以大致分为三类&#xff1a; 值类型&#xff08;Value types&#xff09;&#xff1b;引用类型&#xff08;References types&…

Windows 电脑类别怎么区分?不同类别区分总结

电脑类别 Windows 电脑的类别有哪些&#xff1f;我们可以大致分为这三类&#xff1a;CopilotPC、AI PC、普通 PC。下面就来看看这些电脑类别的区别。 普通 PC 普通 PC 就是指那些标准的台式电脑或者笔记本电脑&#xff0c;它们是由中央处理器&#xff08;CPU&#xff09;以及…

期货日内交易口诀

1、向下差价法 前提&#xff1a;要判断准确后市是向下行情走势。被套后&#xff0c;等反弹到一定的高度&#xff0c;估计见短线高点了&#xff0c;先卖出&#xff0c;待其下跌一段后再买回。通过这样不断地高卖低买来降低成本&#xff0c;最后等总资金补回了亏损&#xff0c;完…