管理扩展数据块

向表添加行时,数据库服务器使用称为 扩展数据块的单位来分配磁盘空间。每个扩展数据块是一批 来自数据库空间的,在物理上相邻接的页。 即使数据库空间包含多于一个块,每个扩展数据块也会完全分配在单个的块中,从而保证邻接。

连续性对于性能很重要。当数据页面是连续的且数据库服务器在预先读取、轻度扫描或轻量级 I/O 操作期间顺序读取行时,磁盘臂的动作将最少。有关这些操作的更多信息,请参阅顺序扫描轻度扫描影响智能大对象空间 I/O 的配置参数

扩展数据块机制是以下互相冲突的需求之间的一种折衷:

如果有需要更多扩展数据块的表,并且数据库服务器已用完分区标题页上的空间,那么该数据库服务器会自动分配扩展的辅助分区标题页以容纳新的扩展数据块条目。数据库服务器可为任何分区分配最多 32767 个扩展数据块数,除非表的大小对扩展数据块数规定了限制。

因为表的大小未知,数据库服务器无法预先分配表空间。 因此,数据库服务器只有在需要时添加扩展数据块,但是要获得更好的性能,任何一个扩展数据块中的所有页都应该是连续的。另外,数据库服务器创建一个与先前扩展数据块相邻的扩展数据块时,它会将这两个扩展数据块视为单个扩展数据块。

随着时间推移,经常更新的表可能变为分段表,这会降低每次服务器访问该表时的性能。对表取消分段可使数据行更紧密的集合在一起,并避免分区标题页溢出问题。