HINT
更新時間 2025-06-25 17:33:50
最近更新時間: 2025-06-25 17:33:50
分享文章
本文為您介紹DRDS支持的HINT語法。
語法說明
HINT語法是一種數據庫提供的特殊SQL語法,允許用戶通過相關的語法干預數據庫的SQL執行方式;DRDS在統一數據訪問層,統一規劃了HINT信息,用于在路由解析和連接層通信。HINT語法的基本格式為:
/* !HINT(文本)*/sql其中,為了支持更靈活的擴展和定義,文本的內容需采用JSON格式,sql為需要執行的SQL語句。
注意
前綴!HINT() 必須大寫。
如果通過命令行方式使用HINT語法,則需要加上參數--comments=true,例如:
$ mysql -h127.0.0.1 -P8866 -uroot -p --comments=true支持的語法
讀寫分離
通過如下語法,可以強制指定語句按照指定規則進行讀寫分離。
/* !HINT({"balance":"1"})*/sql其中,支持如下三種取值:
0:強制語句發往寫節點。1:強制語句發往讀節點。2:強制語句隨機發往數據庫讀節點或寫節點。
示例如下:


路由策略
通過如下語法,可指定特定路由執行SQL。
/* !HINT({"dn":["dn1","dn2"]})*/sql參數說明如下:
dn:路由策略,可表示多個路由節點,用數組表示。dn1、dn2:路由節點的名稱。
示例如下:

mergeCols
mergeCols主要用途為查詢類的統計SQL語句,且查詢多個數據節點時使用,此時,需要對數據進行合并,合并時需要使用的合并列值。
/* !HINT({"dn":["dn1","dn2"],"mergeCols":{"colname1":1,"colname2":2}})*/sql參數說明如下:
colname:表示列名稱,數字為列的計算方式。
其中,支持的統計算法主要有如下幾種:
COUNT:1
SUM:2
MIN:3
MAX:4
Order by
Order by主要用于查詢類的 SQL 語句,且查詢多個節點時,需要對查詢后的數據結果集進行排序時使用。
/* !HINT({"dn":["dn1","dn2"],"order":{"colname1":1,"colname2":0}})*/sql支持的排序如下:
ASC:1
DESC:0
Group by
/* !HINT({"dn":["dn1","dn2"],"group":["colname1","colname2"]})*/sqlgroup節點表示Group by的列名稱。
Limit
/* !HINT({"dn":["dn1","dn2"],"limit":"m,n"})*/sql參數說明如下:
m:指記錄開始的 index,若m為0開始,則表示第一條記錄開始。n:指從第m+1條開始,取n條。
getDataNodes
/* !HINT({'getDataNodes':'company'})*/;返回表所配置的數據節點,其中,company為要獲取到節點的表名。