B 型树扫描程序索引压缩级别和事务处理性能

如果两个部分使用的索引页的数据量低于压缩选项指定的级别,那么 B 型树扫描程序线程通过合并这些页面来压缩索引。可以设置压缩级别以控制查找和装入数据所需的 I/O 量。

B 型树扫描程序线程查找由于其低于指定的级别而可压缩的索引页。B 型树扫描程序可以压缩具有已删除项的索引页和没有已删除项的页面。

缺省情况下,B 型树扫描程序以中等级别进行压缩。下表提供有关将压缩级别更改为高或低的情况下产生的性能益处和代价的信息。

表 1. B 型树扫描程序压缩级别益处和代价
压缩级别 性能益处和代价 何时使用
对于预期会快速增长并带有频繁的 B 型树节点分裂的索引,低压缩级别很有利。压缩级别设置为低时,B 型树索引不需要具有中高压缩级别的索引的那么多分裂,因为更多的可用空间保留在 B 型树节点中。 如果预期索引快速增长且频繁分裂,那么可能希望将压缩级别更改为低。
通常,如果索引为只读或其 90% 为只读,那么高压缩级别很有利,因为搜索数据将需要穿过更少的页面(和更少的 I/O)。 示例可能为没有频繁更改的索引或正在进行批量(块)删除操作的索引。

使用高级别压缩还意味着性能代价,因为其耗用更多 I/O 来更积极的压缩索引。压缩级别高的时候,选择操作将具有较少 I/O。

在以下情况下可能希望将压缩级别更改为高:
  • 如果在大部分时间读取某索引,在小部分时间发生删除和插入操作。
  • 如果批量装入和更新表,并在一段时间内将其保留为只读表。

如果无需将压缩级别更改为高或低,请将 BTSCANNER 配置参数的压缩选项设置为 meddefault

索引压缩和索引填充因素

除了指定何时尝试连接两个部分使用页面的压缩选项,还可以使用 FILL FACTOR 配置参数来控制何时添加新的索引页。用 FILLFACTOR 配置参数或 CREATE INDEX 语句的 FILLFACTOR 选项定义的索引填充因素是索引构建过程中填充的每个索引页的百分比。