全部产品
云市场
云游戏

全局二级索引

更新时间:2020-07-30 12:51:29

全局二级索引 (Global Secondary Index, GSI) ,允许用户按需增加拆分维度,提供全局唯一约束。每个GSI对应一张索引表,使用XA多写保证主表和索引表之间数据强一致。
Global Secondary Index

全局二级索引具备如下能力:

  • 增加拆分维度。
  • 支持全局唯一索引。
  • XA多写,保证主表与索引表数据强一致。
  • 支持覆盖列,减少回表操作,避免额外开销。
  • Online Schema Change,添加GSI不锁主表。
  • 支持通过HINT指定索引,自动判断是否需要回表。

全局二级索引使用方式参考全局二级索引使用文档

常见问题

  • Q:全局二级索引解决什么问题?
    A:如果查询的维度与逻辑表的拆分维度不同,会产生跨分片查询。随着跨分片查询增多,会产生查询卡慢、连接池耗尽等性能问题。GSI通过增加拆分维度来减少跨分片查询,消除性能瓶颈,创建GSI时需要注意选择与主表不同的分库分表键。
  • Q:全局二级索引和局部索引有什么关系?
    A:全局二级索引和局部索引间的关系如下所示:
    • 全局二级索引:不同于局部索引,如果数据行和对应的索引行保存在不同分片上,称这种索引为全局二级索引,主要用于快速确定查询涉及的数据分片
    • 局部索引:分布式数据库中,如果数据行和对应的索引行保存在相同分片上,称这种索引为局部索引。PolarDB-X中特指物理表上的MySQL二级索引
    • 两者的关系:需要搭配使用,PolarDB-X通过GSI将查询下发到单个分片后,该分片上的局部索引能够提升分片内的查询性能。