ORALCE逻辑存储结构

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算法一样,循环利用)

原文地址:https://www.cnblogs.com/xmao/p/12104327.html

时间: 2024-11-12 02:50:56

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

InnoDB逻辑存储结构

从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace).表空间又由段(segment).区(extent).页(page)组成.页在一些文档中有时也称为(block),InnoDB存储引擎的逻辑存储结构大致如图: 表空间可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中.默认情况下InnoDB存储引擎有一个共享表空间ibdata1,即所有数据都存放在这个表空间内.如果用户启动了innodb_file_per_tab

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

1.索引组织表: 在InnoDB存储引擎中,表都是依照主键顺序组织存放的.这样的存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键.假设创建的时候没有显式定义主键,则InnoDB会依照例如以下方式选择或者创建主键: 1). 首先推断表中是否有非空的唯一索引,假设有.则该列就为主键. 2).   假设不符合上述条件,则innodb会自己主动创建一个6字节大小的指针 假设表中有多个非空唯一索引时,InnoDB将选择建表时第一个定义的非空唯一索引为主键,通过_rowid能够显示表的

MySQL InnoDB 逻辑存储结构

MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.ps:页在一些文档中又称块(block). InnoDB存储引擎的逻辑存储结构大致如下: 一.表空间(table space) 表空间分为了两种,这里简单的概括一下: 1. 独立表空间:每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描述文件,还有一个.ibd文件. 其中这个文

oracle逻辑存储结构

逻辑存储结构是对数据存储结构在逻辑概念上的划分.oracle的逻辑存储结构主要由表空间.段.区间和数据块等概念组成.oracle数据块是由多个表空间组成,表空间又是由多个段组成,段有多个数据区组成,数据区又有多个块组成.数据块是Oracle逻辑存储中的最小的逻辑单位,也是执行数据输入.输出最小存储单位.数据块由块头.表目录.行目录.空余空间和行数据组成.块头.表目录.行目录组合起来称为头部信息区,头部信息区不存放数据,存放整个块的引导信息,起到引导系统读取数据的作用.空余空间和行数据公共构成块的

mysql innodb 的 逻辑存储结构

如上图: innodb 的 逻辑存储单元分成 表空间,段,区,页 4个等级 默认情况下,一个数据库 所有变共享一个 默认的表空间(tablespan).可以指定每个表一个表空间. 一个表空间管理着 多个 segment( 段 ),不固定个数 一个段管理着多个区( extent ),并且一个区是一个 1M . 一个 区 有 64 页 (page),一个页是 16K. 页是mysql 逻辑存储单元的最小单元,一个 页可以保存多行的数据. page 结构:File Header(38字节),Page

InnoDB存储引擎介绍-(5) Innodb逻辑存储结构

如果创建表时没有显示的定义主键,mysql会按如下方式创建主键: 首先判断表中是否有非空的唯一索引,如果有,则该列为主键. 如果不符合上述条件,存储引擎会自动创建一个6字节大小的指针. 当表中有多个非空的唯一索引,会选择建表时第一个定义的非空唯一索引.注意根据的是定义索引的顺序,不是创建列的顺序. 表空间 tablespace(ibd文件) 段 segment(一个索引2个段) Extent(1MB) Page(16KB) Row Field 表空间

数据库逻辑存储结构管理(5)-存储-表空间段区块

查看表空间信息SELECT * FROM V$TABLESPACE 查看表空间数据文件路径信息SELECT * FROM DBA_DATA_FILES; 查看表空间的属性信息SELECT * FROM DBA_TABLESPACES 查看表空间组及其所属的表空间的信息SELECT * FROM DBA_TABLESPACE_GROUPS查看表空间里面的表的组成SELECT SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME FROM DBA_SEGMENTS WH

oracle基本语句(第五章、数据库逻辑存储结构管理)

1.使用SYS用户以SYSDBA身份登录到SQL Plus,使用视图V$TABLESPACE查看表空间信息 SELECT * FROM V$TABLESPACE; 2.查看视图DBA_TABLESPACES查看所有表空间的属性和在线状态 SELECT TABLESPACE_NAME, CONTENTS, STATUS FROM DBA_TABLESPACES;--表空间名,表空间内容,表空间状态 3.其他(略) 4.创建表空间 CREATE TABLESPACE <表空间名> DATAFILE

Oracle存储(物理+逻辑)结构

Oracle存储结构:物理结构+逻辑结构 Oracle 数据库存储逻辑结构 在操作系统中无法找到逻辑存储结构所对应的文件,但通过查询Oracle数据库的数据字典,可以找到逻辑存储结构的描述. 逻辑存储结构包括表空间,段,区,数据块.逻辑结构之间的关系是:多个块组成区,多个区组成段,多个段组成表空间,多个表空间组成逻辑数据库. 表空间(多个表空间组成逻辑数据库) 段(多个段组成表空间) 区(多个区组成段) 数据块(多个数据块组成区) 一个区:一个区只能在一个数据文件中. 段中的各个区:一个段中的各