自定义 HINT 怎么制作?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

自定义 HINT 怎么制作?

猫饭先生 2017-10-30 13:45:16 1375
DRDS 自定义 HINT 概要

HINT 作为一种 SQL 补充语法,在关系型数据库中扮演着非常重要的角色。它允许用户通过相关的语法影响 SQL 的执行方式,从对 SQL 进行特殊的优化。同样,DRDS 也提供了特殊的 HINT 语法。

例如,假设已知目标数据在某些分库的分表中,需要直接将 SQL 下发到该分库执行,就可以使用 DRDS 自定义 HINT 来完成。

/!TDDL:NODE IN('node_name', ...)*/SELECT * FROM table_name;
这个 SQL 语句中/!和*/之间的语句就是 DRDS 的自定义 HINT,即TDDL:node in('node_name', ...),它指定了 SQL 语句在特定的 RDS 分库上执行。

注意:

DRDS 自定义 HINT 支持 /!TDDL:hint command*/ 和 /*TDDL:hint command*/ 两种格式。

如果使用 /*TDDL:hint command*/ 格式,在使用 MySQL 官方命令行客户端执行带有 DRDS 自定义 HINT 的 SQL 时,请在登录命令中加上 -c 参数。否则,由于 DRDS 自定义 HINT 是以 MySQL 注释 形式使用的,该客户端会将注释语句删除后再发送到服务端执行,导致 DRDS 自定义 HINT 失效。具体请查看 MySQL 官方客户端命令。

DRDS 自定义 HINT 语法

基本语法:

/!TDDL:hint command*/
DRDS 自定义 HINT 是借助于 MySQL 注释实现的,也就是 DRDS 的自定义 HINT 语句位于/!与*/之间,并且必须以TDDL:开头。其中 hint command 是 DRDS 自定义 HINT 命令,与具体的操作相关。例如下面的 SQL 语句通过 DRDS 的自定义 HINT 展示每个分库的表名。

/!TDDL:SCAN*/SHOW TABLES;
该 SQL 语句中 /!TDDL:SCAN*/ 为 DRDS 自定义 HINT 部分,以TDDL:开头,SCAN 为 DRDS 自定义 HINT 命令。

DRDS 自定义 HINT 分类

根据操作类型的不同,DRDS 的自定义 HINT 主要可以分为以下几类:

读写分离
备库延迟切断
自定义 SQL 超时时间
指定分库执行 SQL
扫描全部分库分表
SQL 关系型数据库 MySQL 数据库连接 分布式数据库 RDS
分享到
取消 提交回答
全部回答(0)
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程