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算法一样,循环利用)
ORALCE逻辑存储结构的更多相关文章
- oracle逻辑存储结构
oracle数据库管理系统有三个重要的概念:实例.数据库.数据库服务器.oracle数据库的存储结构可以分为逻辑存储结构和物理存储结构.逻辑存储结构用于描绘Oracle内部组织和管理数据的方式,而物理 ...
- InnoDB的表类型,逻辑存储结构,物理存储结构
表类型 对比Oracle支持的各种表类型,InnoDB存储引擎表更像是Oracle中的索引组织表(index organized table).在InnoDB存储引擎表中,每张表都有个主键,如果在创建 ...
- InnoDB 逻辑存储结构
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/80 如果创建表时没有显示的定义主键,mysql会按如下方式创建主 ...
- MySQL InnoDB 逻辑存储结构
MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.p ...
- MYSQL Innodb逻辑存储结构
转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...
- InnoDB逻辑存储结构
从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace).表空间又由段(segment).区(extent).页(page)组成.页在一些文档中 ...
- InnoDB存储引擎表的逻辑存储结构
1.索引组织表: 在InnoDB存储引擎中,表都是依照主键顺序组织存放的.这样的存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键.假设创建的时候没有显式定义主键,则Inn ...
- Oracle 逻辑存储结构
一.总述 逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构.逻辑存储结构是从逻辑的角度分析数据库的组成,是对数据存储结构在逻辑概念上的划分 ...
- 学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构
目录 1.oracle 11g体系结构概述 1.1 三个重要概念 1.2 oracle数据库存储结构 2 逻辑存储结构 2.1 数据块(Data Blocks) 2.2 数据区(Extent) 2.3 ...
随机推荐
- 从零开始のcocos2dx生活(三)Scheduler
文章目录 取模 Timer() 变量 设置定时器Timer() 一些成员函数 Scheduler() 变量 初始化 哈希表 构造函数schedule() 开启定时器Update() 析构函数~Upda ...
- SpringBootTest 测试工具
以下内容,翻译自官方文档,并结合了学习过程的demo. Spring Boot提供了许多实用程序和注解,帮助测试应用程序.测试支持由两个模块提供:spring-boot-test 包含核心项,spri ...
- git简单使用指南
git - 简易指南 这是一篇最适合初学者的教程,这里面没有高深的内容.学习git它可以帮助你管项目代码,提高团队开发效率.我使用的是win10系统,这里我会用它来给大家讲解. git - 安装 安装 ...
- Snipaste - 可以提高你工作效率的截图软件
使用Snipaste提高您的工作效率 Snipaste是一个简单但功能强大的剪切工具,还允许您将屏幕截图固定在屏幕上.下载并启动应用程序,按F1开始剪切,然后按F3将其粘贴为浮动窗口.而已! 您还可以 ...
- Dockerfile + Nginx.conf文件记录(用于前端项目部署)
Dockerfile + Nginx.conf文件记录(用于前端项目部署) 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理),默认服 ...
- hutool BigExcelWriter 下的autoSizeColumnAll异常问题
autoSizeColumnAll java.lang.IllegalStateException: Could not auto-size column. Make sure the column ...
- 能快速理解Java_集合类_的文章
目录 @ 这篇文章是我学习完Java集合类做的笔记和总结,如果你想认真细读这篇文章,请做好受虐的准备(建议电脑看),因为这篇文章有点长,ヽ(ー_ー)ノ. 如果在看我这篇文章过程中,发现了错误,望指点. ...
- npm全局模块卸载及默认安装目录修改
卸载全局安装模块 npm uninstall -g <package> 卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:npm ls npm ...
- js如何下载后台传过来的base64文件
一.<a>标签的作用 相信大部分人都知道<a>链接再简单不过了,跳转嘛,跳转到另外一个页面,这谁不知道. 当然这这是一部分, <a> 标签定义超链接,用于从一个页面 ...
- 对网站和项目使用IIS Express的64位版