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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本文适用于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
扫描全部分库分表 支持,增加根据条件计算物理表名称和显式指定物理表名功能 扫描全部分库分表
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
4月前
|
SQL 存储 关系型数据库
关系型数据库SQLserver基本 SQL 操作
【7月更文挑战第28天】
35 4
|
3月前
|
SQL 安全 关系型数据库
关系型数据库SQL server DELETE 语句
【8月更文挑战第3天】
76 10
|
3月前
|
SQL 关系型数据库 数据库
关系型数据库SQL server UPDATE 语句
【8月更文挑战第3天】
68 10
|
3月前
|
SQL 关系型数据库 BI
关系型数据库SQL server INSERT 语句
【8月更文挑战第3天】
61 9
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到慢SQL问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 存储 监控
|
3月前
|
SQL 关系型数据库 数据库
|
3月前
|
SQL 关系型数据库 数据库
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之sql运行报错是神么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 Serverless
PolarDB产品使用问题之如何控制队列中排队的SQL的等待时间
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 下一篇
    无影云桌面