PolarDB-X 1.0-SQL 手册-Hint--Hint简介

简介: 本文适用于PolarDB-X 5.3 及以上版本,其他版本请参见PolarDB-X 5.2 HINT。

本文适用于PolarDB-X 5.3 及以上版本,其他版本请参见PolarDB-X 5.2 HINT。

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

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


  1. SELECT /*+TDDL:node('node_name')*/* FROM table_name;

这个 SQL 语句中/*和*/之间的语句就是 PolarDB-X 的自定义 HINT,即+TDDL:node('node_name'),它指定了 SQL 语句在特定的 RDS 分库上执行。

注意:

  • PolarDB-X 自定义 HINT 支持 /*+TDDL:hint_command*/ 和 /!+TDDL:hint_command*/ 两种格式。
  • 如果使用 /*+TDDL:hint_command*/ 格式,在使用 MySQL 官方命令行客户端执行带有 PolarDB-X 自定义 HINT 的 SQL 时,请在登录命令中加上 -c 参数。否则,由于 PolarDB-X 自定义 HINT 是以 MySQL 注释 形式使用的,该客户端会将注释语句删除后再发送到服务端执行,导致 PolarDB-X 自定义 HINT 失效。详情请参见MySQL 官方客户端命令。

PolarDB-X 自定义 HINT 语法

基本语法:


  1. /*+TDDL: hint_command [hint_command ...]*/
  2. /!+TDDL: hint_command [hint_command ...]*/

PolarDB-X 自定义 HINT 基于MySQL注释,HINT语句支持/* hint */和/! hint */两种格式,并且必须以+TDDL:开头。其中 hint_command 是 PolarDB-X 自定义 HINT 命令,与具体的操作相关, 多个 hint_command 之间使用空格分割。

例子:


  1. # 查询每个分库中的物理表名
  2. /*+TDDL:scan()*/SHOW TABLES;

  3. # 将查询下发到 RDS 只读实例的 0000 分库上
  4. /*+TDDL:node(0) slave()*/SELECT * FROM t1;

例子中 /*+TDDL:scan()*/ 和 /*+TDDL:node(0) slave()*/ 为 PolarDB-X 自定义 HINT 部分,以+TDDL:开头。scan()、node(0)、slave() 为 PolarDB-X 自定义 HINT 命令,多个 HINT 命令之间使用空格分割。

在 SQL 语句中使用 HINT:

PolarDB-X 支持在 DML、DDL、DAL 语句中使用 HINT,具体语法如下:

  • 对于所有支持 HINT 的语句,允许在语句前指定 HINT,如
  1. /*+TDDL: ... */ SELECT ...
  2. /*+TDDL: ... */ INSERT ...
  3. /*+TDDL: ... */ REPLACE ...
  4. /*+TDDL: ... */ UPDATE ...
  5. /*+TDDL: ... */ DELETE ...
  6. /*+TDDL: ... */ CREATE TABLE ...
  7. /*+TDDL: ... */ ALTER TABLE ...
  8. /*+TDDL: ... */ DROP TABLE ...
  9. /*+TDDL: ... */ SHOW ...
  10. ...
  • 对于 DML 语句,允许在首个关键字之后指定 HINT,如
  1. SELECT /*+TDDL: ... */  ...
  2. INSERT /*+TDDL: ... */  ...
  3. REPLACE /*+TDDL: ... */  ...
  4. UPDATE /*+TDDL: ... */  ...
  5. DELETE /*+TDDL: ... */  ...
  6. ...

不同 HINT 支持的语句范围可能不同,实际支持情况请参见具体HINT命令说明。

使用多个 HINT:

PolarDB-X 支持在 HINT 语句中使用多个 HINT 命令


  1. SELECT /*+TDDL:node(0) slave()*/...;

PolarDB-X 不支持通过以下方式使用多个 HINT 命令


  1. # 不支持 单条 SQL 语句中包含多个 HINT 语句
  2. SELECT /*+TDDL:node(0)*//*+TDDL:slave()*/...;

  3. # 不支持 HINT 语句中 包含重复的 HINT 命令
  4. SELECT /*+TDDL:node(0) node(1)*/...;

PolarDB-X 自定义 HINT 分类

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

PolarDB-X 自定义 HINT 兼容性

PolarDB-X 5.3 及以上版本,向下兼容大部分PolarDB-X 5.2 自定义 HINT,详细对照关系如下

PolarDB-X 5.2 HINT 支持情况 对应的 PolarDB-X 5.3 HINT
读写分离 支持 5.2 HINT 语法 读写分离
备库延迟切断 不支持,添加后不产生效果 无
自定义 SQL 超时时间 支持 5.2 HINT 语法 自定义 SQL 超时时间
指定分库执行 SQL 部分支持, 通过分库键值指定 SQL 在分库上执行迁移至 扫描全部分库分表 指定分库执行 SQL
扫描全部分库分表 支持,增加根据条件计算物理表名称和显式指定物理表名功能 扫描全部分库分表
相关文章
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
1011 3
|
SQL 存储 关系型数据库
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
940 1
|
SQL 存储 关系型数据库
关系型数据库SQLserver基本 SQL 操作
【7月更文挑战第28天】
403 4
|
SQL 关系型数据库 分布式数据库
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
554 14
|
SQL 安全 关系型数据库
关系型数据库SQL server DELETE 语句
【8月更文挑战第3天】
740 10
|
SQL 关系型数据库 数据库
关系型数据库SQL server UPDATE 语句
【8月更文挑战第3天】
1037 10
|
SQL 关系型数据库 BI
关系型数据库SQL server INSERT 语句
【8月更文挑战第3天】
793 9
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到慢SQL问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 关系型数据库 数据库
|
SQL 关系型数据库 数据库

热门文章

最新文章

相关产品

  • 云原生分布式数据库 PolarDB-X