全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
分布式关系型数据库 DRDS

自定义 HINT 简介

更新时间:2017-08-17 14:15:52

DRDS 自定义 HINT 概要

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

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

  1. /!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 语法

基本语法:

  1. /!TDDL:hint command*/

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

  1. /!TDDL:SCAN*/SHOW TABLES;

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

DRDS 自定义 HINT 分类

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

本文导读目录