本文將介紹RANGE_HASH函數的使用方式。

適用場景

適用于需要有兩個拆分鍵,并且查詢時僅有其中一個拆分鍵值的場景。

使用限制

  • 拆分鍵的類型必須是字符類型或數字類型,兩個拆分鍵類型必須保持一致。
  • 兩個拆分鍵皆不能修改。
  • 折分鍵暫時不支持做范圍查詢。
  • 插入數據時兩個拆分鍵的后N位需確保一致。
  • 字符串長度需不少于N位
  • PolarDB-X 1.0實例的版本需為5.1.28-1320920或以上版本,關于實例版本請參見版本說明

路由方式

根據任一拆分鍵后N位計算哈希值,然后再按分庫數取余,完成路由計算。N為函數第三個參數。例如,RANGE_HASH(COL1, COL2, N) ,計算時會優先選擇COL1,截取其后N位進行計算。 COL1不存在時再選擇COL2。

示例

假設PolarDB-X 1.0里已經分了8個物理庫,現在需要按買家ID和訂單ID對訂單表進行分庫;查詢時條件僅有買家ID或訂單ID,那么您可以使用如下DDL語句構建訂單表:

create table test_order_tb (  
    id int, 
    buyer_id varchar(30) DEFAULT NULL,  
    order_id varchar(30) DEFAULT NULL, 
    create_time datetime DEFAULT NULL,
    primary key(id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 
    dbpartition by RANGE_HASH(buyer_id,order_id, 10) 
    tbpartition by RANGE_HASH (buyer_id,order_id, 10) tbpartitions 3;