PolarDB-X 1.0-用户指南-自定义HINT-HINT简介

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 自定义HINT概要HINT 作为一种 SQL 补充语法,在关系型数据库中扮演着非常重要的角色。它允许用户通过相关的语法影响 SQL 的执行方式,对 SQL 进行特殊的优化。同样,PolarDB-X 也提供了特殊的 HINT 语法。例如,假设已知目标数据在某些分库的分表中,需要直接将 SQL 下发到该分库执行,就可以使用PolarDB-X自定义 HINT 来完成。

自定义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 5.3 及以上版本,其他版本请参见PolarDB-X 5.2 HINT 简介

注意事项

  • 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:

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 语法 5.3 读写分离
备库延迟切断 不支持,添加后不产生效果
自定义 SQL 超时时间 支持 5.2 HINT 语法 自定义 SQL 超时时间
指定分库执行 SQL 部分支持, “通过分库键值指定 SQL 在分库上执行” 迁移至 扫描全部分库分表 指定分库执行 SQL
扫描全部分库分表 支持,增加 “根据条件计算物理表名称” 和 “显式指定物理表名” 功能 扫描全部分库分表
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
5月前
|
NoSQL Java 关系型数据库
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
非关系型数据库NoSQL数据层解决方案 之 Mongodb 简介 下载安装 springboot整合与读写操作
65 0
|
5月前
|
SQL 存储 关系型数据库
PolarDB产品使用合集之有的sql里面有自定义存储函数 如果想走列存有什么优化建议吗
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
333 0
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
云原生数据库PolarDB自定义权限策略参考
本文介绍了自定义权限策略,它是RAM访问控制体系中除系统策略外,用户可创建、更新和删除的权限策略。用户需维护策略版本更新,并将策略绑定到RAM身份以授予权限。策略支持版本控制和删除,但删除前需确保无引用。文章提供了相关操作文档链接,包括创建、修改、删除策略及管理引用记录和版本。此外,列举了PolarDB在MySQL、PostgreSQL和XScale版的自定义权限策略场景和示例,并提示用户在使用时需了解授权信息。
57 0
|
存储 运维 关系型数据库
直播预告 | PolarDB-PG架构简介及日常运维浅析
本次分享将先从架构、特性、开源等三个维度解读PolarDB-PG的整体架构。在大家对架构有一定深入理解后,将继续从备份恢复、存储层、计算层扩容、只读节点提升、高可用等五个维度,对PolarDB-PG的日常运维进行深入浅出的介绍,为“唯手熟尔”的运维打好理论基础。
|
Cloud Native 关系型数据库 分布式数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——简介
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——简介自制脑图
92 2
|
存储 SQL Cloud Native
《阿里云认证的解析与实战-关系型数据库ACP认证》——PolarDB云原生关系型数据库的解析与实践(上)—— 一、PolarDB的产品简介(上)
《阿里云认证的解析与实战-关系型数据库ACP认证》——PolarDB云原生关系型数据库的解析与实践(上)—— 一、PolarDB的产品简介(上)
|
存储 监控 并行计算
《阿里云认证的解析与实战-关系型数据库ACP认证》——PolarDB云原生关系型数据库的解析与实践(上)—— 一、PolarDB的产品简介(下)
《阿里云认证的解析与实战-关系型数据库ACP认证》——PolarDB云原生关系型数据库的解析与实践(上)—— 一、PolarDB的产品简介(下)
|
6月前
|
存储 并行计算 关系型数据库
PolarDB 开源版通过pg_rational插件支持Stern-Brocot trees , 实现高效自定义顺序和调整顺序需求
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过pg_rational插件支持Stern-Bro...
90 0
|
SQL Oracle 关系型数据库
关系型数据库MySQL简介 以及 如何进入MySQL的客户端
关系型数据库MySQL简介 以及 如何进入MySQL的客户端
关系型数据库MySQL简介 以及 如何进入MySQL的客户端
|
存储 并行计算 Cloud Native
PolarDB 开源版通过pg_rational插件支持Stern-Brocot trees , 实现高效自定义顺序和调整顺序需求
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版通过pg_rational插件支持Stern-Brocot trees , 实现高效自定义顺序和调整顺序需求.
176 0

相关产品

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