GBase 8a数据库实际支持的索引类型详解
本文继续说明为什么列存不依赖传统 B-Tree 索引,南大通用GBase 8a数据库(gbase database) 实际使用了哪些替代机制,以及怎样在列存环境下做到真正有效的查询加速。
虽然传统 B-Tree 索引在列存引擎上效果有限,GBase 8a数据库仍然支持几种索引语法,但其实现原理和适用场景与行存索引完全不同。
GBase 8a 接受索引定义语法,但内部实现不是 B-Tree,而是类似 Zone Map 的列块级最小值/最大值记录。这意味着 GBase 8a 的索引对等值查询(=)的加速效果不明显,对范围查询有一定帮助(特别是当数据有序时),但整体上不如行存数据库的索引那样强力。
不要依赖索引来解决 GBase 8a 的查询性能问题,这是最重要的认知转变。在行存数据库里,"查询慢就加索引"是常见的优化策略;在 GBase 8a 里,优化慢查询应该优先考虑:分区裁剪是否生效、分布键是否合理、是否有数据倾斜、统计信息是否更新、能否用复制表避免 Shuffle——这些才是 GBase 8a 的有效优化手段,而不是加索引。
