You need to enable JavaScript to run this app.
文档中心
云数据库 MySQL 版

云数据库 MySQL 版

复制全文
下载 pdf
连接管理
使用 Hint 语法
复制全文
下载 pdf
使用 Hint 语法
本文介绍如何通过 Hint 语法使指定节点执行 SQL 请求。​
背景信息​
使用 Hint 语法可以强制 SQL 请求在指定的节点上执行。Hint 的路由优先级最高,不受一致性、事务的约束,但 Hint 功能依赖 Proxy 链路,需要开启读写分离,并对所有连接生效,请在使用前合理评估是否可以用于业务。​
支持的 Hint 语法​
  • 当前支持以下三种 Hint:​
  • 指定到主节点执行。​
  • ​
    /* FORCE_MASTER */​
    ​
  • 指定到只读节点执行。​
  • ​
    /* FORCE_SLAVE */​
    ​
  • 指定某个具体节点执行。在目标实例的连接管理菜单下获取节点 ID。​
  • ​
    /* FORCE_NODE='<id>' */​
    ​
说明​
指定节点不存在 / 该节点暂时不可用时,使用 Hint 强制路由将报错 specific node[<id>] not found。​
支持的 SQL 语句​
支持以下类型的单 SQL 语句:​
  • SHOW STATEMENT​
  • SELECT STATEMENT​
  • EXPLAIN STATEMENT​
  • UNION STATEMENT​
  • KILL STATEMENT​
说明​
  • 支持大小写混用(如 /* FORCE_master */ show databases;)。​
  • 支持在 SDK 中使用。​
转发策略​
在读写分离指定各节点权重前提下使用 Hint,将会按照以下策略进行转发:​
  • 指定到主节点执行(/* FORCE_MASTER */)​
  • 可在主节点权重为 0 的情况下,将 SQL 语句强制路由至主节点。​
  • 指定到只读节点执行(/* FORCE_SLAVE */)​
  • 首先尝试在只读节点间按权重做转发,若只读节点权重均为 0,语句将被路由至主节点。​
  • 指定某个具体节点执行(/* FORCE_NODE='<id>' */)​
  • 可在特定节点权重为 0 的情况下,将语句强制路由至该节点。​
使用限制​
  • 在 MySQL 客户端中通过命令行进行连接并使用 Hint 语句时,需在命令中增加 -c 选项,否则 Hint 会被 MySQL 命令行工具过滤​
  • Hint 注释限制在 SQL 语句起始部分,如 /* FORCE_MASTER */ show databases;;语句内注释不解析,如 show /* FORCE_MASTER */ databases;。​
  • 不支持在一条 SQL 语句中加入多条 Hint,如 /* FORCE_MASTER FORCE_SLAVE */。​
  • 暂不支持通过 Hint 转发 PREPARE 语句或多语句,如 show databases;或 use test;。​
​
最近更新时间:2026.09.11 10:27:24
这个页面对您有帮助吗?
有用
有用
无用
无用