开发指南—常见问题—扫描全部/部分分库分表

简介: 本文介绍了扫描全部/部分分库分表的HINT语法和示例。

除了可以将SQL单独下发到一个或多个分库执行,PolarDB-X还提供了扫描全部/部分分库与分表的SCAN HINT。使用SCAN HINT,您可以一次将SQL下发到每一个分库执行, 比如查看某个分库上的所有分表,或者查看某个逻辑表的每张物理表中的数据量等。

通过SCAN HINT,可以指定四种执行SQL的方式:

  1. 在所有分库的所有分表上执行;
  2. 在指定分库的所有分表上执行;
  3. 在指定分库分表上执行,根据条件计算物理表名称;
  4. 在指定分库分表上执行,显式指定物理表名;

SCAN HINT支持 DML、DDL和部分DAL语句。

语法


# SCAN HINT
# 将SQL语句下发到所有分库的所有分表上执行
SCAN()                               
# 将SQL语句下发到指定分库的所有分表上执行
SCAN(NODE="node_list")               # 指定分库
# 将SQL语句下发到指定分库分表上执行,根据条件计算物理表名称
SCAN(
  [TABLE=]"table_name_list"          # 逻辑表名
  , CONDITION="condition_string"     # 使用TABLE和CONDITION中的内容计算物理库表名称
  [, NODE="node_list"] )             # 过滤通过CONDITION计算出的结果,仅保留指定物理库
# 将SQL语句下发到指定分库分表上执行,显式指定物理表名
SCAN(
  [TABLE=]"table_name_list"          # 逻辑表名
  , REAL_TABLE=("table_name_list")   # 物理表名,对所有物理库使用相同的物理表名
  [, NODE="node_list"] )             # 过滤通过CONDITION计算出的结果,仅保留指定物理库
# 物理/逻辑表名列表
table_name_list: 
    table_name [, table_name]...
# 物理库列表,支持GROUP_KEY和GROUP的序号, 可以通过`SHOW NODE`语句获得 
node_list: 
    {group_key | group_index} [, {group_key | group_index}]...
# 支持SQL WHERE的语法,需要为每一张表设置条件,如:t1.id = 2 and t2.id = 2
condition_string: 
    where_condition

注意事项

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

示例

  • 在所有分库的所有分表上执行:
SELECT /*+TDDL:scan()*/ COUNT(1) FROM t1
  • 执行后会下发SQL语句到t1的所有物理表上执行,并将结果集合并后返回。
  • 在指定分库的所有分表上执行:
SELECT /*+TDDL:scan(node='0,1,2')*/ COUNT(1) FROM t1
  • 执行后会首先计算出t1在0000, 0001, 0002分库上的所有物理表,然后下发SQL语句并将结果集合并后返回。
  • 按条件在指定分表上执行:
SELECT /*+TDDL:scan('t1', condition='t1.id = 2')*/ COUNT(1) FROM t1
  • 执行后会首先计算出逻辑表t1满足condition条件的所有物理表,然后下发SQL语句并将结果集合并后返回。
  • 按条件在指定分表上执行,有JOIN的情况:
SELECT /*+TDDL:scan('t1, t2', condition='t1.id = 2 and t2.id = 2')*/ * FROM t1 a JOIN t2 b ON a.id = b.id WHERE b.name = "test"
  • 执行后会首先计算出逻辑表t1t2满足 condition 条件的所有物理表,然后下发 SQL 语句并将结果集合并后返回。 注意:使用该自定义注释需要保证两张表的分库和分表数量一致,否则PolarDB-X计算出的两个键值对应的分库不一致,就会报错。
  • 在指定分库分表上执行,显式指定物理表名:
SELECT /*+TDDL:scan('t1', real_table=("t1_00", "t1_01"))*/ COUNT(1) FROM t1
  • 执行后会下发SQL语句到所有分库的t1_00``t1_01分表上,合并结果集后返回。
  • 在指定分库分表上执行,显式指定物理表名, 有JOIN的情况:
SELECT /*+TDDL:scan('t1, t2', real_table=("t1_00,t2_00", "t1_01,t2_01"))*/ * FROM t1 a JOIN t2 b ON a.id = b.id WHERE b.name = "test";
  • 执行后会下发SQL语句到所有分库的t1_00t2_00t1_01t2_01分表上,合并结果集后返回。
相关文章
|
XML Java 数据库连接
Mybatis实现RBAC权限模型查询
通过对RBAC权限模型的理解和MyBatis的灵活使用,我们可以高效地实现复杂的权限管理功能,为应用程序的安全性和可维护性提供有力支持。
425 5
|
6天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
9天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
10177 79
|
6天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
5776 15
|
8天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
5668 13
|
10天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
5968 15
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
4天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
3241 6
|
2天前
|
人工智能 JavaScript 测试技术
保姆级教程:OpenClaw阿里云及本地部署+Claude Code集成,打造全能 AI 编程助手
在AI编程工具百花齐放的2026年,Anthropic推出的Claude Code凭借72.5%的SWE-bench测试高分、25倍于GitHub Copilot的上下文窗口,成为开发者追捧的智能编程助手。但单一工具仍有局限——Claude Code擅长代码生成与审查,却缺乏灵活的部署与自动化执行能力;而OpenClaw(前身为Clawdbot)作为开源AI代理框架,能完美弥补这一短板,通过云端与本地双部署,实现“代码开发-测试-部署”全流程自动化。
1657 13

热门文章

最新文章