在Oracle数据库中,Block是数据文件的基本存储单位
-
数据块(Data Block):数据块是Oracle数据库中最小的I/O单元。每个数据块包含一定数量的行(Row)和相关的系统信息。数据块的大小可以根据需要进行配置,但通常为2KB、4KB、8KB或16KB。数据块是数据文件的基本组成部分,用于存储表、索引等数据对象的数据。
-
高水位线(High Water Mark, HWM):高水位线是数据块中已使用空间的边界。在数据块中,高水位线之上的空间是未使用的,而高水位线之下的空间已被占用。当向数据块中插入新数据时,高水位线会向上移动,以反映已使用空间的增加。
-
空闲空间(Free Space):空闲空间是数据块中未使用的部分,位于高水位线之上。当从数据块中删除数据时,空闲空间会增加。在插入新数据时,数据库会尽量使用空闲空间,以减少数据块的碎片化。
-
数据块头(Block Header):数据块头是数据块的起始部分,包含有关数据块的元数据,如数据块的编号、数据文件编号、表空间编号、段编号、数据块类型等。此外,数据块头还包含有关数据块使用情况的信息,如高水位线、空闲空间等。
-
行指针数组(Row Pointer Array):行指针数组位于数据块头之后,用于存储指向数据块中每行数据的指针。这些指针有助于快速定位和访问数据块中的特定行。
-
数据行(Row):数据行是数据块中实际存储数据的部分。每个数据行包含一条记录的所有列值。数据行按照行指针数组中的顺序存储在数据块中。
-
数据块尾(Block Trailer):数据块尾位于数据块的末尾,包含有关数据块的校验和、备份信息等。这些信息有助于确保数据块的完整性和可靠性。
总之,Oracle数据库中的Block是由数据块、高水位线、空闲空间、数据块头、行指针数组、数据行和数据块尾组成的。这种存储结构有助于提高数据库的性能和可靠性。