区由数据块(data block)构成,数据块是Oracle数据库的I/O单位,也就是说,在读写Oracle数据库中的数据时,每一次读写的数据量必须至少为一个数据块大小。
不要把Oracle的数据块与操作系统的I/O块相混淆。I/O块是操作系统执行标准I/O操作时的块大小,而数据块则是Oracle执行读写操作时一次所传递的数据量,Oracle数据块大小必须是操作系统I/O块大小的整数倍。
Oracle数据块的结构如图4.3所示,它由以下几部分组成。
①块头:包含一般块信息,如块的磁盘地址及其所属段的类型(如表段或索引段)等。
图4.3 Oracle数据块结构
②表目录:说明块中数据所属的表信息。
③行目录:说明块中数据对应的行信息。(www.daowen.com)
④空闲空间:数据块内还没有被分配使用的空闲空间。
⑤行数据:包含表或索引数据,行数据可以跨越多个数据块。
Oracle数据库支持的数据块大小包括2 KB、4 KB、8 KB、16 KB和32 KB 5种。在创建数据库时,初始化参数DB_BLOCK_SIZE指定数据块大小。该尺寸的数据块被称为数据库的标准块或默认块。数据库标准块大小一旦确定就无法改变,除非重新创建数据库。
在创建表空间时,如果不指定数据块的大小,所创建表空间的块大小将与标准块大小相同。但也可以使用BLOCKSIZE子句指定表空间的块大小。
数据库管理员(DataBase Administrator,DBA)在指定表空间的块大小时应考虑行数据的长度。虽然Oracle允许行数据的存储跨越多个数据块(称为行链接),但这样会降低检索性能,因为从多个数据块检索一行数据所需的I/O次数要比从一个数据块检索多,所以一个数据库内的行链接越多,查询的性能就会越低。因此,为了提高性能,DBA应该根据应用中行数据的长度创建适当块大小的表空间。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。