oracle数据块实现原理深入解析—oracle培训

oracle数据块实现原理深入解析—oracle培训

ID:19934186

大小:33.50 KB

页数:7页

时间:2018-10-08

oracle数据块实现原理深入解析—oracle培训_第1页
oracle数据块实现原理深入解析—oracle培训_第2页
oracle数据块实现原理深入解析—oracle培训_第3页
oracle数据块实现原理深入解析—oracle培训_第4页
oracle数据块实现原理深入解析—oracle培训_第5页
资源描述:

《oracle数据块实现原理深入解析—oracle培训》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(datablock),北京甲骨文(盈佳科技)学习中心将详细介绍数据块是数据库中最小的(逻辑)数据单位。与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte)。每种操作系统都有一个被称为块容量(blocksize)的参数。Oracle每次获取数据时,总是访问整数个(Oracle)数据块,而不是按照操作系统块的容量访问数据。数据库中标准的数据块(datablock)容量是由初始化参数DB_BLOCK_SIZE指定

2、的。除此之外,用户还可以指定五个非标准的数据块容量(nonstandardblocksize)。数据块容量应该设为操作系统块容量的整数(同时小于数据块容量的最大限制),以便减少不必要的I/O操作。Oracle数据块是Oracle可以使用和分配的最小存储单位。数据块结构在Oracle中,不论数据块中存储的是表(table)、索引(index)或簇表(clustereddata),其内部结构都是类似的。块结构图如下所示:数据块头(包括标准内容和可变内容)数据块头(header)中包含了此数据块的概要信息,例如块地

3、址(blockaddress)及此数据块所属的段(segment)的类型(例如,表或索引)。表目录区如果一个数据表在此数据块中储存了数据行,那么数据表的信息将被记录在数据块的表目录区(tabledirectory)中。行目录区此区域包含数据块中存储的数据行的信息(每个数据行片断(rowpiece)在行数据区(rowdataarea)中的地址)。[一个数据块中可能保存一个完整的数据行,也可能只保存数据行的一部分,所以文中使用rowpiece]当一个数据块(datablock)的行目录区(rowdirectory

4、)空间被使用后,即使数据行被删除(delete),行目录区空间也不会被回收。举例来说,当一个曾经包含50条记录的数据块被清空后,其块头(header)的行目录区仍然占用100字节(byte)的空间管理开销数据块头(datablockheader),表目录区(tabledirectory),行目录区(rowdirectory)被统称为管理开销(overhead)。其中有些开销的容量是固定的;而有些开销的总容量是可变的。数据块中固定及可变管理开销的容量平均在84到107字节(byte)之间。行数据数据块(data

5、block)中行数据区(rowdata)包含了表或索引的实际数据。一个数据行可以跨多个数据块。可用空间区在插入新数据行,或在更新数据行需要更多空间时(例如,原来某行最后一个字段为空(trailingnull),现在要更新为非空值),将使用可用空间区(freespace)中的空间。如果一个数据块(datablock)属于表或簇表的数据段(datasegment),或属于索引的索引段(indexsegment),那么在其可用空间区中还可能会存储事务条目(transactionentry)。如果一个数据块中的数据行

6、(row)正在由INSERT,UPDATE,DELETE,及SELECT...FORUPDATE语句访问,此数据块中就需要保存事务条目。事务条目所需的存储空间依据操作系统而定。在常见的操作系统中事务条目大约需要占用23字节(byte)。可用空间管理可用空间可以被手动或自动管理数据库中,每个段(segment)的可用空间可以被自动管理。段内的可用/已用空间以位图(bitmap)形式记录,这与可用块以列表方式的管理不同。段空间自动管理(Automaticsegment-spacemanagement)具备以下优势

7、:●易于使用●空间利用效率更高,尤其针对每行数据容量差异大的表(或其他对象)●能够更好地针对当前数据的情况实时调整●Bettermulti-instancebehavior.intermsofperformance/spaceutilization用户可以在创建一个本地管理的表空间(locallymanagedtablespace)时选择自动段空间管理(automaticsegment-spacemanagement)功能。这样在此表空间内创建的段都将默认地设置为自动段空间管理。数据块可用空间的有效性及优化有

8、两种SQL语句可以增加数据块中的可用空间:分别是DELETE语句,和将现有数据值更新为占用容量更小值的UPDATE语句。在以下两种条件下,上述两中操作释放的空间可以被后续的INSERT语句使用:●如果INSERT语句与上述两种操作在同一事务(transaction)中,且位于释放空间的语句之后,那么INSERT语句可以使用被释放的空间。●如果INSERT语句与释放空间的语句在不同的事务中(比如两者是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。