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"]})*/sql
group
节点表示Group by的列名称。
Limit
/* !HINT({"dn":["dn1","dn2"],"limit":"m,n"})*/sql
参数说明如下:
m
:指记录开始的 index,若m为0开始,则表示第一条记录开始。n
:指从第m+1条开始,取n条。
getDataNodes
/* !HINT({'getDataNodes':'company'})*/;
返回表所配置的数据节点,其中,company
为要获取到节点的表名。