Bridged Indexes in OrioleDB: architecture, internals and everyday use?
a year ago
- #PostgreSQL
- #Database Indexing
- #OrioleDB
- OrioleDB beta10引入了桥接索引,支持在OrioleDB表上创建非B树索引。
- 桥接索引之所以必要,是因为OrioleDB将行数据存储在基于主键的B树中,并使用撤销日志实现MVCC机制,这与PostgreSQL的索引访问方法不兼容。
- 桥接索引层包含一个虚拟的'iptr'列,该列映射到主键值,使得PostgreSQL索引能够与OrioleDB协同工作。
- 与依赖VACUUM清理的PostgreSQL索引不同,桥接索引能自动处理MVCC及逻辑更新/删除操作。
- 用户可选择自动或手动创建桥接索引,并能通过参数控制桥接层以优化性能或进行测试。
- 性能考量包括:桥接索引会额外增加一次查找跳转,且涉及桥接索引的列更新时会产生额外开销。
- 桥接索引无需为OrioleDB重写扩展,即可直接使用PostgreSQL丰富的索引访问方法生态系统(如GIN、GiST等)。
- 该特性让用户能平衡性能与功能需求,未来版本预计将进一步提升OrioleDB的能力。