




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle对数据库数据文件(datafile中的存储空间进行管理的单位是数据块(data block,北京甲骨文(盈佳科技学习中心将详细介绍数据块是数据库中最小的(逻辑数据单位。与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte。每种操作系统都有一个被称为块容量(block size的参数。Oracle每次获取数据时,总是访问整数个(Oracle数据块,而不是按照操作系统块的容量访问数据。数据库中标准的数据块(data block容量是由初始化参数 DB_BLOCK_SIZE指定的。除此之外,用户还可以指定五个非标准的数据块容量(nonstandardblock size
2、。数据块容量应该设为操作系统块容量的整数(同时小于数据块容量的最大限制,以便减少不必要的I/O操作。Oracle数据块是Oracle可以使用和分配的最小存储单位。数据块结构在Oracle中,不论数据块中存储的是表(table、索引(index或簇表(clustered data,其内部结构都是类似的。块结构图如下所示:数据块头(包括标准内容和可变内容数据块头(header中包含了此数据块的概要信息,例如块地址(block address及此数据块所属的段(segment的类型(例如,表或索引。表目录区如果一个数据表在此数据块中储存了数据行,那么数据表的信息将被记录在数据块的表目录区(table
3、 directory中。行目录区此区域包含数据块中存储的数据行的信息(每个数据行片断(row piece在行数据区(row data area中的地址。一个数据块中可能保存一个完整的数据行,也可能只保存数据行的一部分,所以文中使用row piece当一个数据块(data block的行目录区(row directory空间被使用后,即使数据行被删除(delete,行目录区空间也不会被回收。举例来说,当一个曾经包含50条记录的数据块被清空后,其块头(header的行目录区仍然占用100字节(byte的空间管理开销数据块头(data block header,表目录区(table director
4、y,行目录区(rowdirectory被统称为管理开销(overhead。其中有些开销的容量是固定的;而有些开销的总容量是可变的。数据块中固定及可变管理开销的容量平均在84到107字节(byte之间。行数据数据块(data block中行数据区(row data包含了表或索引的实际数据。一个数据行可以跨多个数据块。可用空间区在插入新数据行,或在更新数据行需要更多空间时(例如,原来某行最后一个字段为空(trailing null,现在要更新为非空值,将使用可用空间区(free space中的空间。如果一个数据块(data block属于表或簇表的数据段(data segment,或属于索引的索引
5、段(index segment,那么在其可用空间区中还可能会存储事务条目(transaction entry。如果一个数据块中的数据行(row正在由INSERT,UPDATE, DELETE,及 SELECT.FOR UPDATE 语句访问,此数据块中就需要保存事务条目。事务条目所需的存储空间依据操作系统而定。在常见的操作系统中事务条目大约需要占用23字节(byte。可用空间管理可用空间可以被手动或自动管理数据库中,每个段(segment的可用空间可以被自动管理。段内的可用/已用空间以位图(bitmap形式记录,这与可用块以列表方式的管理不同。段空间自动管理(Automatic segment
6、-space management具备以下优势: 易于使用 空间利用效率更高,尤其针对每行数据容量差异大的表(或其他对象 能够更好地针对当前数据的情况实时调整 Better multi-instance behavior. in terms of performance/space utilization用户可以在创建一个本地管理的表空间(locally managed tablespace时选择自动段空间管理(automatic segment-space management功能。这样在此表空间内创建的段都将默认地设置为自动段空间管理。数据块可用空间的有效性及优化有两种SQL语句可以增加数
7、据块中的可用空间:分别是 DELETE 语句,和将现有数据值更新为占用容量更小值的 UPDATE 语句。在以下两种条件下,上述两中操作释放的空间可以被后续的 INSERT 语句使用: 如果 INSERT 语句与上述两种操作在同一事务(transaction中,且位于释放空间的语句之后,那么INSERT 语句可以使用被释放的空间。 如果 INSERT 语句与释放空间的语句在不同的事务中(比如两者是由不同的用户提交的,那么只有在释放空间的语句提交后,且插入数据必需使用此数据块时,INSERT 语句才会使用被释放的空间。数据块(data block中被释放出的空间未必与可用空间区(free spac
8、e相连续。Oracle在满足以下条件时才会将释放的空间合并到可用空间区:(1INSERT 或 UPDATE 语句选中了一个有足够可用空间容纳新数据的数据块,(2但是此块中的可用空间不连续,数据无法被写入到数据块中连续的空间里。Oracle只在满足上述条件时才对数据块中的可用空间进行合并,这样做是为了避免过于频繁的空间合并工作影响数据库性能。行链接(Row Chaining及行迁移(Row Migrating有两种情况会导致表中某行数据过大,一个数据块(data block无法容纳。第一种情况,当一行数据被插入时一个数据块就无法容纳。在这种情况下Oracle将这行数据存储在段内的一个数据块链(c
9、hain中。在插入数据量大的行时常会发生行链接(row chaining,例如一个包含数据类型为 LONG 或LONG RAW 列的数据行。此时行链接不可避免。第二种情况,原本存储在一个数据块(data block内的数据行,因为更新操作导致长度增长,而所在数据块的可用空间也不能容纳增长后的数据行。在这种情况下,Oracle将此行数据迁移(migrate到新的数据块中。Oracle在被迁移数据行原来所在位置保存一个指向新数据块的指针。被迁移数据行的rowid 保持不变。当数据行发生链接(chain或迁移(migrate时,对其访问将会造成 I/O 性能降低,因为Oracle为获取这些数据行的数
10、据时,必须访问更多的数据块(data block。PCTFREE,PCTUSED,及行链接(Row Chaining在手动管理的表空间(manually managed tablespaces中,用户可以使用PCTFREE 和 PCTUSED 这两个存储管理参数来控制对某段(segment进行插入和更新操作时,如何利用属于此段的数据块(data block中的可用空间。用户也可以在创建或修改索引时为其设定 PCTFREE 参数(索引存储在索引段(index segment中PCTFREE 参数PCTFREE 参数用来设置一个数据块(data block中至少需要保留(reserve多少可用空间
11、(百分比值,为数据块中已有数据更新时可能发生的数据量增长做准备。例如,当用户用 CREATE TABLE 语句创建表时指定了以下参数:PCTFREE 20这个参数设定了此表对应的数据段(data segment中的每个数据块(datablock至少保留20%的可用空间,以备块中已有数据更新时使用。只要数据块中行数据区与数据块头的容量之和不超过数据块总容量的80%,用户就可以向其中插入新数据,数据行被放入行数据区(row data area,相关信息被写入数据块头(overhead areaPCTUSED 参数PCTUSED 参数用于决定一个数据块(data block是否可被用于插入新数据,她
12、的依据是数据区(row data与数据块头(overhead的容量之和占数据块全部容量的最大百分比。当一个数据块中的可用空间比例小于PCTFREE 参数的规定时,Oracle就认为此数据块无法被用于插入新数据,直到数据块中的占用容量比例小于 PCTUSED 参数的限定。在占用容量比例大于 PCTUSED 参数的限定之前,Oracle只在更新数据块内已有数据时才会使用此数据块的可用空间。例如,当用户用 CREATE TABLE 语句创建表时指定了以下参数:PCTUSED 40在例子中,当此表的某数据块占用容量比例高于40%时,Oracle不会将此数据块用于插入新数据行(假设此数据块的可用空间曾经
13、低于 PCTFREE 的限定PCTUSED 的作用PCTFREE 和 PCTUSED 如何协同发挥作用PCTFREE 和 PCTUSED 共同作用可以优化数据块(data block的空间使用。使用 PCTFREE 和 PCTUSED 参数管理数据块的可用空间 在第一步中,数据块占用空间比例小于80%时才能插入新数据,因为 PCTFREE 参数限定必须保留20%的可用 空间用于块内已有数据的更新。在第二步中,对数据块中已有数据的更新操作可以使用数据块中的保留空 间。只有当数据块内的占用空间比例低于40%时才能向其中插入新数据。在第三步中,当数据块内的占用空 间比例低于40%时,此数据块再次可以
14、被用于插入新数据。在第四步中,数据块占用空间比例小于80%时才 能插入新数据,因为 PCTFREE 参数限定必须保留20%的可用空间用于块内已有数据的更新。此过程如此往 复循环。 在新分配的数据块中(data block) ,可用于插入(insert)数据的空间等于数据块总容量减去数据块头 (block overhead)再减去预留可用空间(PCTFREE) 。而更新(update)数据块内已有数据可使用数据块 中的所有可用空间。因此,更新操作能够使数据块内的可用空间低于的 PCTFREE 限制,因为这些空间是专 为更新操作而预留的。 在每个数据段(data segment) 与索引段(ind
15、ex segment)中,Oracle 管理着一个或多个可用块列表(free list)-其中列出了所有属于此段的数据扩展(extent) ,且可用空间比例大于 PCTFREE 限定的数据块。 这些块可以被插入(insert)操作使用。当用户提交了 INSERT 语句后,Oracle 从可用块列表中选择第一 个有效的数据块使用。如果此数据块的可用空间不够容纳 INSERT 语句提交的数据,且此块的占用容量已 经超过 PCTUSED 的限定,Oracle 就将其从可用块列表中移出。一个段可以同时使用多个可用块列表,以减 少对一个表进行并发插入(concurrent insert)时产生的竞争。 当用户提交了 DELETE 或 UPDATE 语句后,Oracle 处理语句并检查相关数据块中的占用空间比例是否小于 PCTUSED 的规定。 如果满足, 那么这个数据块就被放入当前事务 (transaction) 正在使用的可用块列表 (free list)的头部,如果当前事务还需要写入数据,此块将被首先使用。当事务提交后,此数据块中的可用空 间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车使用与维护 课件 项目一 制动系统的使用与维护1-4 盘式制动器的检查与维护
- 2025年电壁车项目可行性研究报告
- 2025年电动精小型单座套筒调节阀项目可行性研究报告
- 2025年甲基异丙基酮项目可行性研究报告
- 2025年瓶装液体灌装机项目可行性研究报告
- 2025年特种钢铸件项目可行性研究报告
- 中北大学《英语叙事文写作》2023-2024学年第一学期期末试卷
- 皖西卫生职业学院《工程材料与机械制造基础A》2023-2024学年第二学期期末试卷
- 湖南省衡阳二十六中2025年下学期高三生物第二次阶段检测试题考试试卷含解析
- 浙江省嘉兴市秀洲区2025届数学三下期末达标检测试题含解析
- 大小便观察与护理
- 2025年-重庆市安全员-A证考试题库附答案
- 多式联运模式在跨境电商中的应用-全面剖析
- 湖北省孝感市高新区2023-2024学年七年级下学期数学期中考试试卷(含答案)
- 8.2 诚信经营 依法纳税课件-高中政治统编版选择性必修二法律与生活
- 领导带班及24小时值班制度
- 具身智能机器人扩散策略Diffusion Policy环境安装与运行
- 2024年湖北省中考满分作文《满树繁花》
- 肿瘤患者的血栓预防及护理
- 作风建设方面个人简短总结
- 职业病危害告知书
评论
0/150
提交评论