在 AlloyDB for PostgreSQL 中启用自适应过滤

本页面介绍了 AlloyDB 中的自适应过滤。

自适应过滤会在查询执行期间分析查询句式和数据分布,以动态选择最有效的过滤策略,例如内嵌过滤或预过滤。

AlloyDB 查询优化器使用基于成本的分析,来确定在查询执行期间的任何给定时间点,是内嵌过滤还是预过滤能够提供最佳性能。

此类优化对 AlloyDB 的过滤式向量搜索非常有益,其中自适应过滤会在向量和元数据索引用法之间自动切换,以确保无需人工干预即可高效准确地获得结果。

启用自适应过滤

如需启用自适应过滤,请使用 scann.enable_preview_features 标志。

当自适应过滤在执行期间触发从内嵌过滤到预过滤的切换时,查询计划会动态更改。

例如,当优化器确定在查询的该时间点预过滤效率更高时,该方案可能会在执行策略字段中显示 Bitmap assisted pre-filtering。当系统适应在查询执行期间遇到的实际数据时,就会发生此动态变化。

Limit (actual rows=10 loops=1)
  ->  Custom Scan (vector scan) on t1 (actual rows=10 loops=1)
        Execution Strategy: Bitmap assisted pre-filtering
        Order By: (vec_col <=> '[...]'::vector)
        Limit: 10
        Num Requalifications: 0
        Num filtered: 1000
        ->  Bitmap Index Scan on btree_idx (actual rows=10000 loops=1)
              Index Cond: (int_col <= 100000000)

后续步骤