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