4.6.4 数据块
数据块是Oracle中的最小存储单位,也是数据库服务器读写数据的最小逻辑单位。数据库服务器在为段分配空间或回收存储空间时,是以区为单位进行的,而在读写数据时,是以数据块为单位进行的。
数据库中的数据最终是存储在硬盘上的,所以数据块与操作系统中的块必然有着密切的联系。一个数据块由若干个操作系统块组成,它的大小是操作系统块的整数倍。数据库服务器在读写数据时以数据块为单位进行,这种访问最终转化为对操作系统块的读写。
在Oracle 11g中,有两种形式的数据块,一种是标准块,另一种是非标准块。标准块的大小由初始化参数DB_BLOCK_SIZE指定,所有标准块的大小都相同。非标准块的大小可以有多种情况,如2KB、4KB、8KB、16KB、32KB(但是不能与标准块的大小相同),等等。在数据库中可以使用一系列初始化参数DB_nK_CACHE_SIZE,其中n为2、4、8、16、32等。这些初始化参数系列用来为非标准块指定数据库高速缓存大小。如果在数据库中定义了非标准块,那么必须在SGA中为它定义相应的数据库高速缓存。无论是哪种数据块,它的大小在数据库创建之后就不能再修改。
数据库服务器在读写数据时,数据块中的数据将首先被调入SGA的数据库高速缓存中,在缓存中必须为每一种大小的数据块定义缓冲区,缓存区的大小与数据块相同。当用户访问数据库时,数据块的内容被读写到与之大小相同的缓冲区中。