百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

ORACLE内核解密之表空间管理

moboyou 2025-03-03 11:09 38 浏览

一、ORACLE表空间管理

1、本地表空间管理tablespace(LMT)

LMT是通过把EXTENT MANAGEMENT LOCAL子句添加到tablespace的定义句法而实现的。和原来由字典管理的tablespace(DMT)不同,LMT会将扩展管理自动化,并保持Oracle DBA不会被用来指定管理扩展大小的NEXT存储参数。这个原则唯一的例外是在NEXT和MINEXTENTS一起用在表格创建的时候。

2、自动区段空间管理(ASSM)

ASSM的tablespace是通过将SEGMENT SPACE MANAGEMENT AUTO子句添加到tablespace的定义句法里而实现的。通过使用位图freelist取代传统单向的链接列表freelist,ASSM的tablespace会将freelist的管理自动化,并取消为独立的表格和索引指定PCTUSED、FREELISTS和FREELIST GROUPS存储参数的能力。

现在ORACLE基本都是ASSM表空间管理,下面我们讨论ASMM表空间管理。

二、自动区段空间管理

1、ASSM结构

ASSM整体结构是由三层位图快和数据块组成。第一层位图块L3块,一块L3块存放多个L2块地址,一个L2块地址存放多个L1块地址,结构示意图如下:

ORACLE一般通过以下几步将数据插入数据库中块的:

第一步:查找数据字典(DBA_SEGMENTS)定位段头(L3)的位置

第二步:在段头中找到L2的位置

第三步:在L2块中根据进程PID号,做HASH运算得到一个随机数A,然后根据随机数找到对应A的L1块地址信息

第四步:根据对应的L1块信息,再次根据进程PID号,做HASH运算得到一个随机数B,然后根据B找到对应数据库块M地址信息

第五步:向第M块插入数据

以上步骤中L3块一般只有一个,一个L3块中有多个L2块一般只有当一个L2用完才会选择第二个L2块,此处不是随机选择,在L2中选择L1时通过HASH算法就是随机选择了,在L1中选择数据块也是通过HASH算法,所以此处也是随机选择,如果一个L2块中有50个L1块地址信息,一个L1中有50数据块地址信息,那么久可以支持同时2500个进程PID同时插入,这就是ORALCE数据所说的支持高并发的原理。

2、ASSM案例

我们建立一个表空间管理方式为ASSM的表空间为50M区大小为1M

 
CREATE TABLESPACE LIUXIAOBIN0724 DATAFILE 'F:\360Downloads\ORACLE\LIUXIAOBIN0724_01.DBF' SIZE 50M REUSE UNIFORM SIZE 1M;

CREATE TABLE LUXIAOBIN0724(ID INT,NAME VARCHAR2(20)) TABLESPACE LIUXIAOBIN0724;

查看区占用情况

SELECT EXTENT_ID, --区ID
       FILE_ID, --文件ID
       BLOCK_ID, --第一个块ID
       BLOCKS --块数
  FROM DBA_EXTENTS
 WHERE SEGMENT_NAME = 'LUXIAOBIN0724' --表名
 ORDER BY EXTENT_ID

我们分别DUMP块128,129,130,131看看块类型(L1,L2,L3)

ALTER SYSTEM DUMP DATAFILE 'F:\360Downloads\ORACLE\LIUXIAOBIN0724_01.DBF' block 128;
ALTER SYSTEM DUMP DATAFILE 'F:\360Downloads\ORACLE\LIUXIAOBIN0724_01.DBF' block 129;
ALTER SYSTEM DUMP DATAFILE 'F:\360Downloads\ORACLE\LIUXIAOBIN0724_01.DBF' block 130;
ALTER SYSTEM DUMP DATAFILE 'F:\360Downloads\ORACLE\LIUXIAOBIN0724_01.DBF' block 131;

根据DUMP文件可知128和129号块为L1

根据DUMP文件可知130号块为L2块131块为段头块L3

此时向表中插入数据:

INSERT INTO LUXIAOBIN0724 VALUES(1,'BBBBBB');

COMMIT;

SELECT * FROM LUXIAOBIN0724;

查看数据插入的那个块

SELECT DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) FILEID, --文件ID
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) BLOCK_ID,--块id
DBMS_ROWID.ROWID_ROW_NUMBER(ROWID) ROW_ID,--行ID
ID
FROM LUXIAOBIN0724;

换一个会话插入一行数据;

INSERT INTO LUXIAOBIN0724 VALUES(2,'CCCCCC');

COMMIT;

查看不同会话插入的块情况:

再次用第一个会话插入一条数据并查看插入的块情况;

根据实验我们知道,同一个会话插入的是同一个块,不同会话插入的是不同的,所以ASSM在在同一个会话大量插入数据时可能导致BUFFER BUSY WAITS,

大家可以思考我们搞数据库的常常会遇到一个问题:比如一个应用刚上班的时候,系统经常出现BUFFER BUSY WAITS,到下午了系统使用的人更多了反而不会出现BUFFER BUSY WAITS.这个问题在上面的实验大家深入实验可以找到答案。

我先做结论,大家有兴趣的可以继续深入实验:ASSM的L1中数据块的多少是根据表大小来定的,表越大,L1中数据块越多,越多的话随机插入不同数据块的可能性越大,反之同时插入一个块的可能性就越大,就容易出现BUFFER BUSY WAITS,普通插入数据的时候是在高水位现之下,找空闲数据块插入,高水位线位于L1块最后一个块位置,L1中HASH算法只在高水位线之下找空闲块,所以要高并发,需要提高高水位线,和L1中数据块数。

相关推荐

python新手学习常见数据类型——数字

Python支持三种不同的数值类型:整型(int)、浮点型(float)、复数(complex)创建数字:a=1b=2.7c=8+4j删除数字:a=1b=2.7c=8+4...

只用一个套路公式,给 Excel 中一列人员设置随机出场顺序

很多同学会觉得Excel单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解Excel的各个知...

Excel神技 TIME函数:3秒搞定时间拼接!职场人必学的效率秘籍

你是否经常需要在Excel中手动输入时间,或者从不同单元格拼接时、分、秒?今天我要揭秘一个超实用的Excel函数——TIME函数,它能让你3秒内生成标准时间格式,彻底告别繁琐操作!一、TIME函数基础...

销售算错数被批?97 Excel 数字函数救场,3 步搞定复杂计算

销售部小张被老板当着全部门骂。上季度销售额汇总,他把38652.78算成36852.78,差了1800块。财务对账时发现,整个部门的提成表都得重算。"连个数都算不对,还做什么销售?&...

如何使用Minitab 1分钟生成所需要的SPC数据

打开Minitab,“计算”-“随机数据”-“正太”,因为不好截图,使用的是拍照记录的方式.再要生产的行数中,填写125,可以按照要求,有些客户要求的是100个数据,就可以填写100...

验证码,除了 12306,我还没有服过谁

为了防止暴力注册或爬虫爬取等机器请求,需要验证操作者是人还是机器,便有了验证码这个设计。本文作者主要介绍了如何使用Axure来设计一个动态的图形验证码,一起来学习一下吧。在软件设计中,为了防止暴力...

零基础也能学会的9个Excel函数,小白进阶必备

今天给大家分享一些常用的函数公式,可以有效地解决Excel中办公所需,0基础也可以轻松学会。建议收藏,在需要的时候可以直接套用函数。1、计算排名根据总和,计算学生成绩排名。函数公式=RANK(E2,$...

[office] excel表格数值如何设置_excel表格怎样设置数值

excel表格数值如何设置  因为电子表格应用程序是用来处理数值数据的,所以数值格式可能是工作表中最关键的部分,格式化数值数据的方式由用户决定,但在每个工作簿的工作表之间应使用一致的处理数字的方法。...

Excel最常用的5个函数!会用最后一个才是高手

是不是在处理Excel数据时,面对繁琐的操作烦恼不已?手动操作不仅耗时费力,还容易出错。别担心,表姐这就为你揭秘Excel中几个超实用的函数,让数据处理变得轻松高效!表姐整理了552页《Office从...

新手必会的53个Excel函数_惊呆小伙伴的全套excel函数技能

(新手入门+进阶+新函数)一、新手入门级(24个)1、Sum函数:求和=Sum(区域)2、Average函数:求平均值=Average(区域)3、Count函数:数字个数=Count(区域)4、Cou...

打工人私藏的4个Excel函数秘籍,效率提升3.7%

小伙伴们好啊,今天咱们分享几个常用函数公式的典型应用。合并内容如下图,希望将B列的姓名,按照不同部门合并到一个单元格里。=TEXTJOIN(",",1,IF(A$2:A$15=D2,B...

Excel偷偷更新的8个函数!原来高手都在用这些隐藏技能

领导突然要销售数据,你手忙脚乱筛选到眼花...同事3分钟搞定的报表,你折腾半小时还在填充公式...明明用了VLOOKUP,却总显示#N/A错误...别慌!今天教你的8个动态数组函数,就像给Excel装...

Excel表格随机函数怎么用?讲解三种随机函数在不同场景的应用

excel随机函数,其特点是能够生成一组随机数字,根据不同需求,还能批量生成小数位和整数,及指定行数和列数,或指定区间范围内的数字。这里根据需求,作者设置了三个问题,第1个是随机生成0至1之间的数字...

单纯随机抽样该如何进行?_单纯随机抽样的适用范围及注意事项

在数据分析中,抽样是指从全部数据中选择部分数据进行分析,以发掘更大规模数据集中的有用信息。在收集数据过程中,绝大多数情况下,并不采取普查的方式获取总体中所有样本的数据信息,而是以各类抽样方法抽取其中若...

随机函数在Excel中的应用_随机函数在excel中的应用实例

【分享成果,随喜正能量】职场,如果你没有价值,那么你随时可能被取代;如果你的价值不如别人,那么社会也不会惯你,你将被无情地淘汰掉。不管什么时候,你一定要学会构建自己的价值。每个人都应该思考这个问题:我...