关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
mars3_default_brin 是 MARS3 存储引擎的一项重要功能,在表级别提供了默认的 brin 索引支持,可以在 SeqScan 时自动过滤数据,无需手动创建索引。
mars3_default_brin 通过在定义中的 default_brinkeys 参数来启用。
create table t
(c1 bigint, c2 bigint, c3 bigint)
using mars3
with(mars3options='default_brinkeys=30');
该参数为int值(默认值为 30):
0 :不启用默认的 default_brin ;-1:系统会自动为所有列中支持 <、>、= 操作符的列创建 default_brin 索引;N :系统会自动为前N列中支持 <、>、= 操作符的列创建 default_brin 索引。
可以通过 mars3_brinkeys 函数查看表中有哪些列有 brinkey。create table t
(c1 bigint, c2 bigint, c3 bigint)
using mars3
with(mars3options='default_brinkeys=2');
insert into t select i,i,i from generate_series(1,1000000) as i;
vacuum t;
default_brinkeys=2,c1 作为前两列之一会有自动创建的 mars3_default_brin 索引,利用索引加速查询select count() from t where c1 < 1000;
default_brinkeys=2,c3 作为第三列不会有自动创建的 mars3_default_brin 索引,这个查询可能不会使用索引,性能相较与前一个查询较差select count() from t where c3 < 1000
| mars3_brin | mars3_default_brin | |
|---|---|---|
| 创建方式 | 需要手动创建 | 自动创建,无需手动操作 |
| 查询支持 | 仅支持 IndexScan 时过滤数据 | 支持Indexscan、SeqScan 时过滤数据 |
| 技术版本 | brinV2 | brinV2 |
| 参数化查询 | 支持参数化查询(param-IndexScan) | 支持参数化查询(param-SeqScan) |