全局二級索引(Global Secondary Index,GSI)是PolarDB-X中的一項重要特性,相比于本地二級索引,全局二級索引中的數據按照指定的拆分方式分布在各個存儲節點上。通過全局二級索引,用戶能夠按需增加拆分維度、提供全局唯一約束等。

每個GSI對應一張分布式索引表,和其他分布式表一樣,按照指定的分區規則水平拆分為多張物理表。PolarDB-X使用分布式事務維護主表和索引表之間數據強一致。全局二級索引
全局二級索引還支持以下特性:
  • 支持選擇覆蓋列,減少回表操作開銷。
  • 在線表結構變更,添加GSI不鎖主表。
  • 支持通過HINT指定索引,自動判斷是否需要回表。

示例1:增加拆分維度。例如,對于在線商城的訂單表,假設按照買家用戶維度拆分,那么對于賣家查詢(例如,查詢某個賣家的本月所有訂單)就需要掃描所有分區。但是借助全局二級索引,可以僅僅掃描相應賣家所在的索引表分區,便可快速找到所需的訂單信息。

示例2:全局唯一約束。例如,假設用戶表是一張分布式表,按照用戶ID分區。如果要求用戶手機號需要全局唯一,那么本地索引無法滿足,必須構建一個以手機號作為索引鍵(同時也是分區鍵)的唯一索引。