DRDS 全局二级索引
DRDS 全局二级索引 (Global Secondary Index, GSI) ,允许用户按需增加拆分维度,提供全局唯一约束。每个 GSI 对应一张索引表,使用 XA 多写保证主表和索引表之间数据强一致。
DRDS 全局二级索引能力:
- 增加拆分维度
- 支持全局唯一索引
- XA 多写,保证主表与索引表数据强一致
- 支持覆盖列,减少回表操作,避免额外开销
- Online Schema Change,添加 GSI 不锁主表
- 支持通过 HINT 指定索引,自动判断是否需要回表
DRDS 全局二级索引使用方式参考 DRDS 全局二级索引使用文档
FAQ:
全局二级索引解决什么问题?
如果查询的维度与逻辑表的拆分维度不同,会产生跨分片查询。随着跨分片查询增多,会产生查询卡慢、连接池耗尽等性能问题。GSI 通过增加拆分维度来减少跨分片查询,消除性能瓶颈,创建 GSI 时需要注意选择与主表不同的分库分表键。
全局二级索引和局部索引的关系?
- 局部索引:分布式数据库中,如果数据行和对应的索引行保存在相同分片上,称这种索引为局部索引。DRDS 中特指物理表上的 MySQL 二级索引
- 全局二级索引:不同于局部索引,如果数据行和对应的索引行保存在不同分片上,称这种索引为全局二级索引,主要用于快速确定查询涉及的数据分片
- 两者的关系:需要搭配使用,DRDS 通过 GSI 将查询下发到单个分片后,该分片上的局部索引能够提升分片内的查询性能。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论