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,一经查实,立即删除!

相关文章

活着就好20241127

今天是27号,周三,一个承前启后并积蓄力量的日子。亲爱的朋友们,大家早上好!在度过了周二这个巩固成果、深化努力的阶段后,我们迎来了又一个充满挑战与机遇的周三。周三,作为一周的转折点,是我们…

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

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

区块链知识体系

1. 区块链基础知识 Q: 什么是区块链? A: 区块链是一种去中心化的分布式账本技术,通过加密算法保证数据的不可篡改性和透明性。它由一系列按时间顺序链接的区块组成,每个区块包含一批交易记录。 Q: 区块链的主要特点是什么? 去…

使用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 都发挥着举足轻重的作用。…

网络--传输层协议--UDP

传输层作用:负责数据能够从发送端传输到接收端。 1、再谈端口号 端口号标识了一个主机上进行通信的不同的应用程序。 1.1、端口号划分范围 0 - 1023 : 知名端口号,HTTP、FTP、SSH等这些广为使用的应用层协议,他们的端口号都是固定的。 10234 - 65536:操作系统动态分配的…

【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 录…

vue的理解

什么是vue vue是一套用于构建用户界面的渐进式框架,与其他框架不同的是,vue被设计为可以自底向上逐层应用,它也是创建单页面应用的web应用框架。vue的核心库只关注视图层,不仅易上手,还便于与第三方库或既有项目整合。…

第十六届蓝桥杯模拟赛第二期题解—Java

第十六届蓝桥杯模拟赛/校赛第二期个人题解,有错误的地方欢迎各位大佬指正 问题一(填空题) 【问题描述】 如果一个数 p 是个质数,同时又是整数 a 的约数,则 p 称为 a 的一个质因数。 请问, 2024 的最大的质因数是多少? …

二代三代社保卡读卡器串口命令协议,适用于单片机等嵌入式系统使用

接触读社保卡:EA EB EC ED 04 00 7E 7A BB 非接读社保卡:EA EB EC ED 04 00 2E 2A BB 返回格式数据: EAEBECED长度信息类型域状态数据校验BB 例如: EA EB EC ED 57 00 00 7E 7B 22 6E 61 6D 65 22 3A 22 D5 C5 CE AC B1 A6 2…

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…

微信小程序 WXS 的概念与基本用法教程

微信小程序 WXS 的概念与基本用法教程 引言 在微信小程序的开发中,WXS(WeiXin Script)是一种特殊的脚本语言,旨在解决小程序在逻辑处理和数据处理上的一些限制。WXS 允许开发者在小程序的 WXML 中嵌入 JavaScript 代码,以便实现更复杂的逻辑处理。本文将深入探讨 WXS 的…

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的值,/是整除运算。 输入 输入仅一行&…

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

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