oracle数据块内部结构详解

news/2024/9/17 3:24:16/ 标签: oracle, 数据库

文章目录

  • Oracle数据块详解
    • 概述
    • Oracle块具有以下特点:
      • ① 最小的I/O单元;
      • ② 包含一个或多个OS块;
      • ③ 大小由参数DB_BLOCK_SIZE决定;
      • ④ 数据库创建时设置,数据库创建后不能更改


Oracle数据块详解

概述

操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之一。当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小。Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块。

数据库块也称逻辑块或Oracle块,它对应磁盘上一个或多个物理块,它的大小由初始化参数DB_BLOCK_SIZE决定,可以定义数据块为2K、4K、8K、16K、32K甚至更大,默认Oracle块大小是8K。若一旦设置了Oracle数据块的大小,则在整个数据库生命期间不能被更改。使用一个合适的Oracle块大小对于数据库的调优是非常重要的

Oracle块具有以下特点:

① 最小的I/O单元;

② 包含一个或多个OS块;

③ 大小由参数DB_BLOCK_SIZE决定;

④ 数据库创建时设置,数据库创建后不能更改

在Oracle中,不论数据块中存储的是表(TABLE)、索引(INDEX)或簇表(CLUSTER TABLE),其内部结构都是类似的。Oracle块的结构如下图所示:

在这里插入图片描述
由上图可以看出,一个Oracle块大约由数据块头(包括标准内容和可变内容,Common And Variable Header)、表目录(Table Directory)、行目录(Row Directory)、可用空间(Free Space)和行数据(Row Data)这几部分组成。图中两个箭头表示一个数据块中的可用空间区的容量是可变的。

●数据块头(Block Header):主要包含有数据块地址的一些基本信息(块地址,Block Address)和段的类型(表段、索引段等)。块头自上而下进行增长。

●表目录(Table Directory):如果一个堆组织表在此数据块中储存了数据行,那么该表的信息将被记录在数据块的表目录中。多个表可以将行存储在相同的块中。

●行目录(Row Directory):此区域包含数据块中存储的数据行的信息,即每个数据行片断(Row Piece)在行数据(Row Data)中的地址。一个数据块中可能保存一个完整的数据行,也可能只保存数据行的一部分。当一个数据块(Data Block)的行目录(Row Directory)空间被使用后,即使数据行被删除(DELETE),行目录空间也不会被回收。举例来说,当一个曾经包含50条记录的数据块被清空后,其块头(Header)的行目录仍然占用100字节(Byte)的空间。仅在块中插入新行时,数据库才会重用此空间。

●可用空间(Free Space):是指可以为以后的更新和插入操作分配的空间,大小由PCTFREE和PCTUSED两个参数影响。可用空间位于块的中部,允许头和行数据空间在必要时进行增长。当插入新行或用更大的值更新现有行的列时,行数据会占用可用空间。导致块头增长的事件包括:行目录需要更多的行条目和需要的事务处理插槽数多于最初配置的数目。块中的可用空间最初是相邻的。但是,删除和更新操作可能会使块中的可用空间变成碎片。

●行数据(Row Data):数据块(Data Block)中行数据(Row Data)包含了表或索引的实际数据。一个数据行可以跨多个数据块。行数据空间自下而上进行增长


http://www.ppmy.cn/news/1522286.html

相关文章

Django跨域问题

简介 由于本站以及很大部分项目都是前后端分离模式,前后端所配置的域名并不相同,所以会受到浏览器的同源策略限制,导致不能正确的请求资源,以下内容先用最简单的方法实现Django后端的跨域问题解决,后续原理再慢慢补充…

ctfshow之文件包含(web78~web86)

web78 if(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 解法一&#xff1a;data伪协议 ?filedata://text/plain,<?php system("tac flag.php"); 解法二&#xff1a;php:filter伪协议 ?filepHp://FilTer/conver…

贪心算法求解拆楼房问题

这是一道典型的贪心算法问题&#xff0c;首先遍历找到一个高度大于0的楼房&#xff0c;然后以此为基准&#xff0c;划分一个区间&#xff0c;找到楼房内高度最小的楼房&#xff0c;每次都减去这个高度最小的值。 后续重复一样&#xff0c;再找减去后楼房高度的最小值&#xff…

Springboot工程配置https访问

背景 因为前端工程使用nginx配置了https访问&#xff0c;在https直接请求我们Springboot后端的http接口会报错。那么我们就需要配置使得我们后端的springboot服务支持https访问。 证书生成 在配置springboot工程https之前&#xff0c;我们需要生成自签名证书以及Spring Boot…

中职院校智能物联网应用专业群建设方案

一、引言 随着信息技术的飞速发展&#xff0c;智能物联网&#xff08;IoT&#xff09;作为新一代信息技术的重要组成部分&#xff0c;正深刻改变着人们的生活方式、生产模式和社会形态。为积极响应国家“中国制造2025”和“智慧城市”等战略部署&#xff0c;培养适应未来社会需…

linux使用samba共享目录,其他虚拟机和windows都可以访问

一、192.168.137.12主机作为源目录主机&#xff0c;将/samba/shared_dir目录分享出去 #192.168.137.12主机&#xff1a; rpm -q samba #查看是否安装 yum -y install samba #创建共享目录 mkdir /samba/shared_dir -p #给共享目录赋权 chown -R samba.samba /samba #提示用户不…

CAS与原子操作

什么是原子操作&#xff1f; 原子操作是一种在执行过程中不会被中断的操作。它要么完全执行成功&#xff0c;要么完全不执行&#xff0c;确保在操作完成之前其他线程不会看到操作的中间状态。 原子操作的实现 CAS CAS是由 CPU 提供的原子指令。在硬件级别上确保操作的原子性。…

linux 查看java 进程

在 Linux 中&#xff0c;可以使用以下几种常用方法来查看运行中的 Java 进程&#xff1a; 1. ps 命令 ps 是最常用的查看进程的命令。你可以使用以下命令查看 Java 进程的 PID&#xff1a; ps -ef | grep java-e&#xff1a;显示所有进程。-f&#xff1a;显示完整格式的信息…

斗破C++编程入门系列之二十一:数组、指针和字符串:数组的存储与初始化、对象数组、数组作为函数参数(一星斗师)

斗破C目录&#xff1a; 斗破C编程入门系列之前言&#xff08;斗之气三段&#xff09; 斗破C编程入门系列之二&#xff1a;Qt的使用介绍&#xff08;斗之气三段&#xff09; 斗破C编程入门系列之三&#xff1a;数据结构&#xff08;斗之气三段&#xff09; 斗破C编程入门系列之…

产业生态构建,产业运营服务如何促进上下游协同?

在当今竞争激烈的市场环境中&#xff0c;产业生态的构建成为了企业发展的关键。而产业运营服务作为推动产业生态发展的重要力量&#xff0c;在促进上下游协同方面发挥着至关重要的作用。 首先&#xff0c;产业运营服务通过搭建交流合作平台&#xff0c;促进上下游企业之间的沟通…

2024自动化测试面试真题(附答案)!

一、编程语法题 1 、 python 有哪些数据类型 python 数据类型有很多&#xff0c;基本数据类型有整型&#xff08;数字&#xff09;、字符串、元组、列表、字典和布尔类型等 2 、怎么将两个字典合并 调用字典的 update 方法&#xff0c;合并 2 个字典。 3 、 json.l python 如…

uboot:配置编译

了解BSP 在嵌入式系统中&#xff0c;BSP&#xff08;Board Support Package&#xff09;被称为板级支持包或板级支持软件。它是一组针对特定硬件平台的软件支持包&#xff0c;为开发人员提供了一个统一的接口层&#xff0c;简化了硬件和软件之间的交互。BSP的主要功能和特点如…

HarmonyOS开发实战( Beta5版)不要使用函数/方法作为复用组件的入参规范实践

概述 在滑动场景下&#xff0c;常常会对同一类自定义组件的实例进行频繁的创建与销毁。此时可以考虑通过组件复用减少频繁创建与销毁的能耗。组件复用时&#xff0c;可能存在许多影响组件复用效率的操作&#xff0c;本篇文章将重点介绍如何通过组件复用四板斧提升复用性能。 组…

Cozer必备!一站式解锁扣子全网最全插件集锦(五)

俗话说&#xff0c;工欲善其事必先利其器&#xff01; 用过Coze的朋友都知道&#xff0c;插件在Coze里的重要性。插件库就相当于武器库&#xff0c;一个好的插件&#xff0c;就相当于一件趁手的兵器&#xff0c;可以让你事半功倍&#xff01; 程哥精心整理了Coze最常用和好用…

Vue 3.5 新特性解析

在Vue 3.5中&#xff0c;几个新特性值得关注&#xff0c;它们将极大简化和增强你的开发体验。让我们逐一深入了解这些特性。 1. defineProps支持解构 在Vue 3.5中&#xff0c;defineProps现在支持解构。你可以直接从defineProps中解构出需要的属性&#xff0c;而不必像以前一…

【牛站 / USACO2007】

题目 思路 离散化&#xff08;降低空间复杂度&#xff09; 点的编号 ∈ [ 1 , 1000 ] &#xff0c;但是点的个数最多为 2 ⋅ T ∈ [ 4 , 200 ] 点的编号 \in [1, 1000]&#xff0c;但是点的个数最多为 2 \cdot T \in[4, 200] 点的编号∈[1,1000]&#xff0c;但是点的个数最多为…

手机扬声器音量总是不够大?试试“扬声器助推器”吧

手机的扬声器音量总是不够大&#xff0c;尤其是在嘈杂的环境中&#xff0c;音乐和视频的声音总是不太清晰。直到我发现了这款“扬声器助推器”&#xff0c;我的手机音质瞬间提升了好几个档次。 软件简介&#xff1a; “扬声器助推器”利用先进的音频处理技术&#xff0c;能够…

扑捉一只耿鬼(HTML文件)

图例&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>耿鬼</title><style>body {background: #fff;font-family: Comfortaa, sans-serif;}* {box-sizing:…

微信小程序请求数据接口封装

文章目录 前言一、方法参考站二、使用步骤1.首先需要创建api文件夹&#xff0c;在文件夹里创建api.js文件2.修改app.js3.页面里使用 总结 前言 最近在写小程序项目&#xff0c;为了节约代码量&#xff0c;以及为了防止后期多处修改地址容易出问题或者遗漏&#xff0c;所以对数…

Maven:简化Java项目管理的利器

Maven&#xff1a;简化Java项目管理的利器 在现代Java开发中&#xff0c;项目管理和构建工具扮演着至关重要的角色。其中&#xff0c;Maven无疑是最受欢迎和广泛使用的工具之一。本文将深入探讨Maven的核心概念、配置方法以及在实际开发中的应用&#xff0c;帮助您更好地理解和…