关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
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) |