关于主键bloom filter的问题

【产品名称】oceanbase

【产品版本】3.1.0

【问题描述】

建表,入库一些数据,表为单主键。仅使用该主键作用查询条件进行查询,当查询给出的主键数据存储时,查询返回非非常快,然而查询条件中的主键在表中不存储时,查询执行的时间则较长。通过show create table 命令查看,发现USE_BLOOM_FILTER=false 。因此,我有如下问题

1、如何创建表时设置 USE_BLOOM_FILTER=true, 则是否表示对主键创建bloom filter索引,如果数据行删除,是否会重建bloom filter。

2、看到说明文档中有bf_cache_miss_count_threshold 这个参数,是否有参数可以配置,让系统对主键默认创建bloom filter, 即使是单次主键查询不存在,也要耗费相当长的时间。

3、根据我的理解,数据 insert时,需要先判断相同主键的数据记录是否存储,这个判断过程是使用什么索引结构来支撑的,应该也是bloom filter吧,所以我理解系统应该会有一个默认的主键bloom filter吧。

create table t(c1 int) use_bloom_filter=true;

USE_BLOOM_FILTER参数是sstable级持久化bloomfilter的选项开关,不论是否打开ob都会在宏块级别使用bloomfilter。

问题中的“在表中不存储”是“在表中不存在”么,我理解是否开启USE_BLOOM_FILTER应该不会影响这两种场景的性能有没有差别,能否提供一下两次查询的结果,响应时间以及explain extended展示的计划呢?

数据存储的形式是IOT表,插入时可以判断是否存在重复值。

顺带问题,

”宏块“是什么概念?

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/block-storage-sstable