【笔记】开发指南—常见问题—指定分库执行SQL

简介: 本文介绍了指定分库执行SQL的HINT语法和示例。

在使用PolarDB-X的过程中,如果遇到某个PolarDB-X不支持的SQL语句,可以通过PolarDB-X提供的NODE HINT,直接将SQL下发到一个或多个分库上去执行。此外如果需要单独查询某个分库或者已知分库的某个分表中的数据,也可以使用NODE HINT,直接将SQL语句下发到分库中执行。

语法

NODE HINT支持通过分片名指定SQL在分库上执行。其中分片名是PolarDB-X中分库的唯一标识,可以通过SHOW NODE语句得到。

通过分库名指定SQL在分库上执行分两种使用方式,分别是指定SQL在某个分库上执行和指定SQL在多个分库上执行。


注意 如果在目标表包含Sequence的INSERT语句上使用了指定分库的HINT,那么Sequence将不生效。更多相关信息,请参考使用限制

  • 指定SQL在某个分库上执行:
/*+TDDL:node('node_name')*/
  • node_name为分片名,通过这个PolarDB-X自定义HINT,就可以将SQL下发到node_name对应的分库中执行。
  • 指定SQL在多个分库上执行:
/*+TDDL:node('node_name'[,'node_name1','node_name2'])*/
  • 在参数中指定多个分片名,将SQL下发到多个分库上执行,分片名之间使用逗号分隔。说明
    • 使用该自定HINT 时,PolarDB-X会将SQL直接下发到分库上执行,所以在SQL语句中,表名必须是该分库中已经存在的表名。
    • NODE HINT支持 DML、DDL、DAL语句。

注意事项

  • 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 官方客户端命令

示例

对于名为drds_test的PolarDB-X数据库,SHOW NODE的结果如下:


mysql> SHOW NODE\G

1. row *
ID: 0
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0000_RDS
MASTER_READ_COUNT: 212
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
2. row *
ID: 1
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0001_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
3. row *
ID: 2
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0002_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
4. row *
ID: 3
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0003_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
5. row *
ID: 4
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0004_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
6. row *
ID: 5
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0005_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
7. row *
ID: 6
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0006_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
8. row *
ID: 7
NAME: DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0007_RDS
MASTER_READ_COUNT: 29
SLAVE_READ_COUNT: 0
MASTER_READ_PERCENT: 100%
SLAVE_READ_PERCENT: 0%
8 rows in set (0.02 sec)

可以看到每个分库都有NAME这个属性,这就是分库的分片名。每个分片名都唯一对应一个分库名,比如DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0003_RDS这个分片名对应的分库名是drds_test_vtla_0003。得到了分片名,就可以使用PolarDB-X的自定义HINT指定分库执行SQL语句了。

  • 指SQL在第0个分库上执行:
SELECT /TDDL:node('DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0000_RDS')/  FROM table_name;
  • 指定SQL在多个分库上执行:
SELECT /TDDL:node('DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0000_RDS','DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0006_RDS')/  FROM table_name;
  • 这条SQL语句将在DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0000_RDSDRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0006_RDS这两个分片上执行。
  • 查看SQL在第0个分库上物理执行计划:
/TDDL:node('DRDS_TEST_1473471355140LRPRDRDS_TEST_VTLA_0000_RDS')/ EXPLAIN SELECT * FROM table_name; ```
相关文章
|
文字识别
Postman调用阿里云云市场的通用文字识别接口
购买了阿里云云市场的接口后,会提供两种接口认证方式:简单身份认证(AppCode)和签名认证,因签名认证相对复杂,可以参考之前的文章,本篇文章简单介绍在postman中通过AppCode调用阿里云云市场的通用文字识别接口
1268 1
Postman调用阿里云云市场的通用文字识别接口
|
存储 弹性计算 安全
阿里云的优缺点
优点: 1.地域和性能全面,多地域多可用区 2.阿里云服务器弹性伸缩 3.自定义网络构架 4.阿里云服务器安全可靠 缺点: 1.无法和钉钉等阿里系以外的工具集成 2.无一对一的专属客户服务 3.不太接受小公司提的产品需求
阿里云的优缺点
|
存储 算法
一文搞懂全排列、组合、子集问题
Hello,大家好,我是bigsai,long time no see!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合、子集等问题更是非常经典问题。本篇文章就带你彻底搞懂全排列!
620 0
一文搞懂全排列、组合、子集问题
|
数据中心
声光双控延时照明电路设计
本文设计的声光双控照明电路用集成电路和微触发可控硅制作,声光自动控制。白天关闭夜晚人来灯亮,人走灯灭,具有灵敏低耗、性能稳定、使用寿命长、节电效果明显等特点,且电路简单、体积小、制作安装方便。
声光双控延时照明电路设计
|
缓存 虚拟化 数据安全/隐私保护
tuxera ntfs for mac功能介绍及怎么使用教程
用了 Mac,我们在使用移动硬盘的时候可能会遇到一个无法传输数据(如拷贝文件)的问题,这是因为部分移动硬盘是 NTFS 格式的,而 Mac 的磁盘不是这个格式,因此就会导致二者之间无法拷贝文件。有一个解决方法就是使用 Tuxera NTFS For Mac,有了它,我们就可以比较顺利地拷贝文件了。
1726 0
|
安全 数据安全/隐私保护 Android开发
AirServer7免费版手机投屏电脑神器
AirServer手机投屏器。它在Windows系统和Mac系统上均可使用,可对安卓和苹果手机进行投屏连接,同时连接安全性高,允许用户设置安全连接方式,如:混合密码连接、屏幕码连接和询问连接等方式。
463 0
|
数据安全/隐私保护
code-server详细安装,最好云端同步写代码神器
code-server详细安装,最好云端同步写代码神器
code-server详细安装,最好云端同步写代码神器
|
网络安全 开发工具 git
2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】(一)
2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】(一)
367 0
2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】(一)
|
传感器 编解码 算法
Google Earth Engine ——MOD15A2H V6是MODIS综合叶面积指数(LAI)和光合有效辐射分数(FPAR)产品500米分辨率的8天综合数据集
Google Earth Engine ——MOD15A2H V6是MODIS综合叶面积指数(LAI)和光合有效辐射分数(FPAR)产品500米分辨率的8天综合数据集
1239 0
Google Earth Engine ——MOD15A2H V6是MODIS综合叶面积指数(LAI)和光合有效辐射分数(FPAR)产品500米分辨率的8天综合数据集
|
域名解析 存储 弹性计算
阿里云ECS服务器和域名购买,绑定,备案教程(域名与公网IP绑定)
本文包含了阿里云ecs和域名的购买,绑定,备案教程,需要在阿里云购买ecs和域名并备案的用户参考,通过此文您可以了解在阿里云购买ecs、域名并如何做备案的大致流程。
阿里云ECS服务器和域名购买,绑定,备案教程(域名与公网IP绑定)