本文將介紹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;