ORACLE逻辑存储结构
块: 数据块 他是最基础的逻辑存储单元,数据以行的形式存储到我么的数据块中

区 :多个块的集合 并且区组成了物理的数据文件

段 :(表 索引 物化视图 物化视图日志 大对象 大对象) 那么在括号中的每一个对象都是一个段。而区由组成了段[逻辑的方式] 一个段中包含多个数据文件

表空间 :表空间指的是段的集合 一个表空间中存在多个段的是 (小表空间) 但是有种特殊的表空间叫(大表空间) 比如说 BLOB CLOB BFILE.....这些都是大表空间中存储的数据,并且大表空间只能有一个文件。

BLOB 主要存视频 图片 。。。。。一般是不大于4G。
CLOB 主要是存文字、xml代码块等 。像我们博客大篇的文字都是用clob类型。
BFILE主要是是使用了 物理+数据库两种方式进行存储 物理的文件存在磁盘空间中 而 这个文件的路径 存储都数据库的表中。

我们现在存储大文件都是用redis进行存储,备份的用rman备份,但是我老师过备份现在都不用rman备份,都是用存储备份。

表、索引和段与表空间的对应于使用关系
我们在创建表和创建索引的过程中,实际上就是在建立一个段。而这个段他会根据你表中列的相关类型发生变化。比如说:
CREATE TABLE TAB_T (ID CHAR(18),NAME VARCHAR2(100),MEMBER CLOB,IMAGE BLOB);
根据分析我们可以得出,这里如果不看相关表中字段数据类型的话,实际上他只应该创建一个段,并且使用的是小表空间类型,但是这里有两个字段MEMBER和IMAGE使用的是大对象数据类型,所以要为这两个字段,单独创建一个大表空间,并且相关的类型有自己对应段。并且也要为这两个字段(member和image)创建独立的索引。这两个大对象的索引有是段结构,所以一个大对象创建后会创建出两个段来,一个是自身的大对象数据段,一个是大对象索引段。
如果这里我们要把ID这个字段变成主键的话,那么这个ID字段也要创建出一个对应的索引段。而这个索引段应该存储到小表空间类型中,他可以和TBA_T的这个表在一个表空间中,也可以不和这个表在一个表空间中,因为数据段尽量不要和索引段放在一起,放置IO争抢问题。

数据块和UNDO块之间的关系
当我们数据块中的一行数据发生UPDATE的时候,首先我们数据块ITL会去记录相关事务的事务编号,以及事务状态和事务产生的老数据保存的UNDO的块的信息,并且这些都是又UNDO段中的事务表同步给UNDO块的。

一个UNDO块只能被一个事务使用,但是一个事务可能使用多个UNDO块

行迁移

发生在update,当一个数块在做UPDATE操作的时候,无法容纳新数据(delete后 insert进来的),他会将数据写到一个新的数据块中,并且ROWID不发生任何改变依旧是一个。我们管这种情况叫做行迁移

行链接

当一个数据块在做INSERT操作的时候,无法容纳新数据时,他会将数据写到另一个数据块中,并且会把相关的数据指针指向到数据结尾(另一个块开头的位置)这样就会发生行链接,只有一个ROWID编号。

无论是行迁移还是行连接,都不会影响事务一致性,但是却会影响事务的IO.因为无形之中我们在读一行数据的时候,本来应该读一个块,结果变成了读两个块,甚至是多个块,而且这里大家要记住,不只是数据块会发生行迁移或者行连接,我们的UNDO块依旧会发生。

HWM(高水位线):当我们的段接近不可写状态,我们称之为高水位线,一般到80%时开始预警,90%严重警告,或直接导致段拒写。

UNDO的几种状态
FREE 代表UNDO表空间中有足够的空间来记录相关的事务。我们称之为FREE状态

commit前状态:

active状态 事务未提交的状态,我们称之为active状态,这个状态UNDO表空间的UNDO块是不允许被再使用的。

commit后状态:

inactive状态 事务过期激活状态,这种状态是事务提交后,UNDO块中的数据没有超过预设的retention时间,所以我门称之为inactive状态。这时候undo块中的数据依旧是不可以再次被使用的。

expired状态 事务提交后,并且过retention时间的UNDO数据,那么这个数据块可以被重新使用。

UNDO的重要参数指标:
UNDO表空间的位置:在我们的ORACLE数据库中,一个实例只能使用一个UNDO表空间。
UNDO的retenion时间:指的时事务提交后我们的undo数据可以保留的事件,一般是900秒
guarantee 保证所有的UNDO数据块中的数据都不过retention时间。

经典面试题:
UNDO表空间不释放出了啥事?
1 retention时间过长
2 事务并没有大量提交,依旧处在锁的状态
3 UNDO表空间开了自增,不停的有FREE空间给新生事务使用

UNDO表空间使用算法
UNDO表空间优先使用FREE空间
当FREE空间不够用的时候,开始使用EXPIRED状态的UNDO块
当EXPIRED状态的块也不够用的时候,他就要等待INACTIVE的UNDO块过retention时间,变成EXPIRED的UNDO块后接着使用
如果一直不提交,那么就一直没有INACTIVE,一直没有INACTIVE就一直没有expireed。(这个就和lru算法一样,循环利用)

ORALCE逻辑存储结构的更多相关文章

  1. oracle逻辑存储结构

    oracle数据库管理系统有三个重要的概念:实例.数据库.数据库服务器.oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构.逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理 ...

  2. InnoDB的表类型,逻辑存储结构,物理存储结构

    表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...

  3. InnoDB 逻辑存储结构

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/80 如果创建表时没有显示的定义主键,mysql会按如下方式创建主 ...

  4. MySQL InnoDB 逻辑存储结构

    MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.p ...

  5. MYSQL Innodb逻辑存储结构

    转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...

  6. InnoDB逻辑存储结构

    从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace).表空间又由段(segment).区(extent).页(page)组成.页在一些文档中 ...

  7. InnoDB存储引擎表的逻辑存储结构

    1.索引组织表:     在InnoDB存储引擎中,表都是依照主键顺序组织存放的.这样的存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键.假设创建的时候没有显式定义主键,则Inn ...

  8. Oracle 逻辑存储结构

    一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...

  9. 学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构

    目录 1.oracle 11g体系结构概述 1.1 三个重要概念 1.2 oracle数据库存储结构 2 逻辑存储结构 2.1 数据块(Data Blocks) 2.2 数据区(Extent) 2.3 ...

随机推荐

  1. Linux常用命令大全(三)

    Linux常用命令大全(三) 文件类型 普通文件(文本文件.数据文件.可执行的二进制文件) 目录文件 同上 差别:由成对的"I节点号.文件名"构成的列表 设备文件 (字符设备.块设 ...

  2. 并发编程的基石——CAS机制

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 Java中提供了很多原子操作类来保证共享变量操作的原子性 ...

  3. 【Python3爬虫】突破反爬之应对前端反调试手段

    一.前言 在我们爬取某些网站的时候,会想要打开 DevTools 查看元素或者抓包分析,但按下 F12 的时候,却出现了下面这一幕:   此时网页暂停加载,自动跳转到 Source 页面并打开了一个 ...

  4. Excel获取当前日期和时间

    在Excel中获取当前时间 1.第一种在空的单元格内输入函数“NOW()”回车即可获取当前时间如图 2.第二种选中空单元格“按住CTRL+:”回车即可获取当前时间 3.第一种在空的单元格内输入函数“t ...

  5. 日志冲突解决方案(基于gradle)

    日志冲突解决方案 前提:我使用gradle管理项目 最近在项目中需要用curator客户端操作zookeeper,在maven仓库拉取的jar包导致日志冲突,会报以下的错误: 经常会有如上图2处红色框 ...

  6. 【tf.keras】使用手册

    目录 0. 简介 1. 安装 1.1 安装 CUDA 和 cuDNN 2. 数据集 2.1 使用 tensorflow_datasets 导入公共数据集 2.2 数据集过大导致内存溢出 2.3 加载 ...

  7. TensorFlow——TensorBoard可视化

    TensorFlow提供了一个可视化工具TensorBoard,它能够将训练过程中的各种绘制数据进行展示出来,包括标量,图片,音频,计算图,数据分布,直方图等,通过网页来观察模型的结构和训练过程中各个 ...

  8. Prometheus+Alertmanager+Grafana监控组件容器部署

    直接上部署配置文件 docker-compose.yml version: '3' networks: monitor: driver: bridge services: prometheus: im ...

  9. 为什么双击打开py文件时窗口瞬间关闭了?

    当前理解,py文件里没有input() 等暂停程序运行的函数,程序运行速度太快,运行完就立马关闭了. input()调用后,程序会立即暂停,等待用户输入

  10. Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维

    引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从 ...