高并发点查的一些优化措施能否扩展到单表简单查的场景,升级为高并发单表简单查?

Viewed 41

我们知道高并发点查利用了短路径和 PreparedStatement 特性,都只支持主键点查,即主键如果有3列组成,那查询语句中也必须包含这3列,所谓的点查相当于 KV 查询,即根据 Key 查 Value。

但在很多业务场景中,特别是之前用 NoSQL,比如 ES/MongoDB,因为其天然不支持多表关联,很多业务都是基于单表实现的。但这些业务又不只是 KV 查询,还可以利用倒排索引、二级索引做各种类似 KV 的单表简单查询,这种单表简单查询在高并发下性能还是相当好的,比如 MongoDB 单节点就可以有几万的QPS。

当然 Doris 功能上也支持,但在单表数据量达到千亿规模,高并发按倒排索引查的场景下 QPS 只有个位数。

为什么不点查呢,因为点查限定的查询条件太严格了,无法满足业务需求。

主键模型MOW如果能够做到这样的话,我想能够吸引更多之前用 NoSQL 的用户:

  1. 行列混存
  2. 短路径,支持点查(查询条件是主键所有列)、简单查(查询条件是主键任意列,或非主键任意列,利用其前缀或倒排索引)
  3. PreparedStatement,支持点查、简单查
  4. 行缓存,支持点查、简单查

这种单表的简单查跟点查很类似,通用的查询引擎和计划对它来说可能太重了。

1 Answers

跟进中,有进展会更新回帖。