GBase 8a
性能调优
文章

SQL优化—— hash global索引优化

发表于2024-12-31 11:04:0737次浏览2个评论

为加速联机查询SQL性能,用户一般会在主要查询表上建立hash索引用于对表查询SQL的where子句中的等值过滤条件进行查询加速。
GBase8a的hash索引提供两种类型:
全局hash索引:建立在表分片上,查询性能高但维护代价高,对所有表上数据的INSERT和UPDATE操作均需要更新全局索引,因此INSERT时会产生较高的随机IO;
分段hash索引:建立在被索引参数KEY_DC_SIZE参数设定的一组DC上,每一组DC单独维护一个索引,其优势在于当表需要进行INSERT或UPDATE操作时,只需要更新该操作命中的DC对应的索引即可,操作不命中的DC的索引不需要进行更新,因此其维护代价更低,但由于各段索引单独维护,因此查询时需要扫描每一段索引以获取索引扫描命中数据,索引扫描性能会有下降。

Hash索引对加载资源使用情况测试结果:

资源消耗情况对比:

测试结论:使用hash索引会显著增加磁盘IO开销,并降低数据写入性能。建议排查并删除不涉及单表精确查询的表上的hash索引。

优化方案:当系统的主要瓶颈在磁盘IO上时,设置适当的KEY_DC_SIZE参数创建分段hash索引的情况下可以找到查询性能和维护索引磁盘IO开销的平衡点,从而在不严重影响查询性能的情况下降低对磁盘IO的消耗。

评论

登录后才可以发表评论
GBase用户51883发表于 2个月前
闪闪发光
用户头像
柒柒天晴发表于 2个月前
向大佬学习