Oracle 深入学习 Part 9: Storage Structure and Relationships(存储结构与关系)

在数据库管理系统(DBMS)中,Segment(段)Extent(区块)Block(块) 是描述数据库物理存储结构的三个重要概念。这些概念帮助理解数据库是如何在磁盘等存储设备上组织和管理数据的。通过这三个层次的结构,数据库能够高效地存储和访问大量数据。

图示结构

Segment(段)└── Extent(区块)└── Block(块)

1. Segment(段)

Segment 是数据库存储结构中的一个更高层次的单位,它代表了数据库中某一类型的数据集合。一个 Segment 由多个 Extent 组成,通常对应于数据库中的某一具体对象,如表、索引或其他数据库对象。


2. Extent(区块)

Extent 是数据库中比块更大的单位,是逻辑上连续的blocks。不可跨datafile 只能存在一个数据文件中。


3. Block(块)

Block 是数据库存储结构的最小单位,是数据库在磁盘上进行 I/O 操作时的基本单位。数据库管理系统在进行读写操作时,会将数据按块进行存储和读取。

  • 块大小在创建数据库之前就被规定好 无法修改

管理块的方式

在 Oracle 数据库中,自动块空间管理 (ASSM, Automatic Segment Space Management)手动块空间管理 (Manual, MSSM) 是两种用于管理数据块中空闲空间的方式。它们决定了 Oracle 如何管理数据段(如表、索引)的存储空间分配和回收。

1. 自动块空间管理(ASSM)

自动块空间管理(ASSM) 通过 位图(bitmap) 来管理数据块中的空闲空间。

每个数据块在 ASSM 模式下都会有一个 位图,用于跟踪数据块内各个空间区域的使用情况,进而有效管理和分配空闲空间。

位图的结构

位图是一个二进制的序列,每一位表示数据块中的一个固定空间区域。

例如,如果数据块大小为 8KB,并且每个数据块被划分为若干个小的空间单位(如每个空间单位大小为 64 字节),那么位图就会有 128 位,每一位代表 64 字节的空间是否已被使用。

        0 表示该区域空闲。

        1 表示该区域已被占用。

Oracle 会根据数据块的位图来判断哪些区域是空闲的,哪些已经被占用。当数据行插入、删除或更新时,位图会自动更新。

2. 手动块空间管理(MSSM)

手动管理(MSSM, Manual Segment Space Management) 就是指管理员需要手动控制数据段(如表、索引等)中空间的分配和回收。

在 Oracle 中,PCTFREEPCTUSEDFREELISTS 是用于手动块空间管理(MSSM)中的几个重要参数,它们控制着如何管理数据块的空间和空闲列表。通过这些参数,DBA 可以调整数据块的存储行为和空闲空间的分配,优化数据的插入和更新过程。

1. PCTFREE

PCTFREE(即 "percent free")指定了在一个数据块中,最小的空闲空间百分比,留给将来的插入或更新数据。这意味着,在数据块中,PCTFREE 定义了每个数据块中至少要保持空闲的空间比例,以避免因为更新操作而引起空间不足。

  • 默认值:通常为 10%,但可以根据需要进行调整。

  • 作用:它确保在每个数据块中留有一定比例的空闲空间,以便处理未来的数据更新(比如增加数据行的长度)。这有助于避免数据更新时发生数据块的溢出。

  • 示例: 如果你设置了 PCTFREE 20,这意味着每个数据块至少会保留 20% 的空间用于未来的更新,剩下的 80% 将用于存储数据。

CREATE TABLE my_table (id NUMBER,name VARCHAR2(100)
)
PCTFREE 20;
2. PCTUSED

PCTUSED(即 "percent used")控制一个数据块何时开始重新使用空闲空间。换句话说,当一个数据块的使用空间超过 PCTUSED 的百分比时,Oracle 会考虑这个数据块已经“满”并且可以进行新的数据插入。PCTUSED 的值通常比 PCTFREE 小。

  • 默认值:通常为 40%,但可以根据需要进行调整。

  • 作用:当一个数据块中已使用的空间超过 PCTUSED 设置的百分比时,Oracle 会尝试将新的数据插入到这个数据块中。通过设置 PCTUSED,可以有效地控制数据块的填充和空间的复用。

  • 示例: 如果你设置了 PCTUSED 40,这意味着当数据块的已用空间超过 40% 时,Oracle 将开始考虑将新的数据行插入到这个数据块中。

CREATE TABLE my_table (id NUMBER,name VARCHAR2(100)
)
PCTUSED 40;
3. FREELISTS

FREELISTS 是 Oracle 中用于管理多个空闲块列表的参数。它决定了数据块如何在多个空闲块列表中分配和回收。一个表可以有多个空闲列表,以便提高并发插入的性能,特别是在高并发环境下。

  • 默认值:通常为 1 个空闲列表,但可以根据需要增加。

  • 作用:通过设置多个 FREELISTS,Oracle 可以在不同的空闲块列表之间分配插入操作,减少锁争用,提高并发性。每个空闲列表包含指向空闲空间的指针,确保空闲空间可以被并发操作使用。

  • 示例: 如果设置了 FREELISTS 2,那么就会为该表创建两个空闲列表,插入数据时 Oracle 会从两个空闲列表中选择一个进行操作。

CREATE TABLE my_table (id NUMBER,name VARCHAR2(100)
)
PCTFREE 10 PCTUSED 40 FREELISTS 2;

3. ASSM 和 MSSM 的区别

特性自动块空间管理 (ASSM)手动块空间管理 (MSSM)
管理方式自动管理空闲空间使用空闲列表手动管理空闲空间
空间管理机制位图,减少碎片化空闲列表,可能导致碎片化
性能影响更高效,减少空间浪费性能可能受到空闲列表操作影响
适用场景适用于频繁的数据插入、更新和删除适用于静态数据或较少变动的数据
Oracle 版本支持Oracle 10g 及以后的版本默认使用Oracle 10g 之前的版本默认使用
管理难度低,自动化管理高,可能需要手动优化和维护

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

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

相关文章

C语言实例之10求0-200内的素数

1. 素数 素数(Prime number),也叫质数,是指在大于 1 的自然数中,除了 1 和它自身外,不能被其他自然数整除的数。例如 2、3、5、7、11 等都是素数,而 4 能被 2 整除、6 能被 2 和 3 整除&#x…

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补,本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境: Linux gnuPython3.10…

哈希C++

文章目录 一.哈希的概念1.直接定址法2.负载因子 二.哈希函数1.除法散列法 / 除留余数法2.乘法散列法3.全域散列法(了解) 三.处理哈希冲突哈希冲突:1.开放定址法(1)线性探测:(2)二次探…

SAR ADC系列15:基于Vcm-Base的开关切换策略

VCM-Based开关切换策略:采样~第一次比较 简单说明: 电容上下极板分别接Vcm(一般Vcm1/2Vref)。采样断开瞬间电荷锁定,进行第一次比较。 当VIP > VIN 时,同时 减小VIP 并 增大VIN 。P阵列最高权重电容从Vcm(1/2Vref)…

深度学习模型:循环神经网络(RNN)

一、引言 在深度学习的浩瀚海洋里,循环神经网络(RNN)宛如一颗独特的明珠,专门用于剖析序列数据,如文本、语音、时间序列等。无论是预测股票走势,还是理解自然语言,RNN 都发挥着举足轻重的作用。…

【IEEE独立出版 | 厦门大学主办】第四届人工智能、机器人和通信国际会议(ICAIRC 2024,12月27-29日)

第四届人工智能、机器人和通信国际会议(ICAIRC 2024) 2024 4th International Conference on Artificial Intelligence, Robotics, and Communication 重要信息 会议官网:www.icairc.net 三轮截稿时间:2024年11月30日23:59 录…

CLIP-Adapter: Better Vision-Language Models with Feature Adapters

当前的问题 由于CLIP的过度参数化和缺乏足够的训练样例,简单的微调会导致对特定数据集的过拟合,并且训练过程会非常缓慢由于在所有CLIP层之间的向前和向后传播。 方法 视觉适配器 A v ( ⋅ ) A_v(\cdot) Av​(⋅)(包含 W 1 v , W 2 v \textbf{W}^v_1,\…

微软Ignite 2024:建立一个Agentic世界!

在今年的Microsoft Ignite 2024上,AI Agent无疑成为本次大会的重点,已经有十万家企业通过Copilot Studio创建智能体了。微软更是宣布:企业可以在智能体中,使用Azure目录中1800个LLM中的任何一个模型了! 建立一个Agent…

Kubeadm 安装 Kubernetes 高可用集群 v1.30.0

1、修改主机名(各个节点) hostnamectl set-hostname xxx2、hosts 文件加入主机名(全部节点) cat /etc/hosts 192.168.88.5 master1 192.168.88.6 master2 192.168.88.7 master3 192.168.88.8 node13、关闭防火墙(全部…

【Python爬虫实战】深入解析 Scrapy:从阻塞与非阻塞到高效爬取的实战指南

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、阻塞和非阻塞 (一)阻塞 (二)非阻塞 二、Scrapy的工作…

计算(a+b)/c的值

计算(ab)/c的值 C语言代码C语言代码Java语言代码Python语言代码 💐The Begin💐点点关注,收藏不迷路💐 给定3个整数a、b、c,计算表达式(ab)/c的值,/是整除运算。 输入 输入仅一行&…

技术文档的高质量翻译对俄罗斯汽车推广的影响

进入新市场需要的不仅仅是一个伟大的产品;它要求深入了解当地消费者的期望、法规和文化差异。对于希望在俄罗斯取得成功的国际汽车制造商来说,技术文件的质量是一个关键因素。手册、规范和服务指南在产品和用户之间形成了直接的桥梁,影响着客…

网络安全事件管理

一、背景 信息化技术的迅速发展已经极大地改变了人们的生活,网络安全威胁也日益多元化和复杂化。传统的网络安全防护手段难以应对当前繁杂的网络安全问题,构建主动防御的安全整体解决方案将更有利于防范未知的网络安全威胁。 国内外的安全事件在不断增…

c++:面向对象三大特性--继承

面向对象三大特性--继承 一、继承的概念及定义(一)概念(二)继承格式1、继承方式2、格式写法3、派生类继承后访问方式的变化 (三)普通类继承(四)类模板继承 二、基类和派生类的转换&a…

【C语言】web workers

请解释一下什么是Web Workers,以及它在哪些场景下会被使用。 Web Workers是一种HTML5技术,它允许在浏览器后台线程中运行脚本,从而实现了JavaScript的异步处理。Web Workers创建了独立于主线程的执行上下文,可以执行计算密集型任…

关于网络安全攻防知识

DNS 劫持 什么是DNS劫持? DNS劫持又叫域名劫持,(劫持了路由器或域名服务器等),篡改了域名的解析结果,使得指向该域名的IP指向IP,你想访问正经网站结果给你跳到一个不正经的网站,实现…

基于Boost库的搜索引擎

本专栏内容为:项目专栏 💓博主csdn个人主页:小小unicorn ⏩专栏分类:基于Boots的搜索引擎 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识…

Pgsql:json字段查询与更新

1.查询json字段的值 SELECT attribute_data->>设施类别 mycol, * FROM gis_coord_data WHERE attribute_data->>设施类别阀门井 查询结果如下: 2.更新json字段中的某个属性值 UPDATE gis_coord_data SET attribute_data(attribute_data::jsonb ||{&quo…

【eNSP】动态路由协议RIP和OSPF

动态路由RIP(Routing Information Protocol,路由信息协议)和OSPF(Open Shortest Path First,开放式最短路径优先)是两种常见的动态路由协议,它们各自具有不同的特点和使用场景。本篇会对这两种协…

Linux——基础命令(1)

目录 一、认识Linux 终端命令格式 查阅命令帮助信息 -help 辅助操作 自动补全 清屏和查看当前工作目录 二、基本命令 文件和目录常用命令 1.ls-查看文件与目录 2.cd切换目录 (1)touc创建文件或修改文件时间 (2)mkdir创…