PolarDB-X 1.0-SQL 手册-Outline-使用说明

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 在使用DRDS数据库的过程中,可能遇到某些SQL优化器生成的执行计划,并不是期望的结果,或者生成的计划并不是最优的,比如有些Join、Aggregate 函数可以下推到下层RDS执行的,但是并没有下推。OUTLINE功能提供了一种给SQL指定执行计划的方式,用户可以通过Hint的方式手工构建SQL的执行计划,并通过OUTLINE的方式指定SQL的执行计划为用户构建的执行计划。

背景介绍

在使用DRDS数据库的过程中,可能遇到某些SQL优化器生成的执行计划,并不是期望的结果,或者生成的计划并不是最优的,比如有些Join、Aggregate 函数可以下推到下层RDS执行的,但是并没有下推。OUTLINE功能提供了一种给SQL指定执行计划的方式,用户可以通过Hint的方式手工构建SQL的执行计划,并通过OUTLINE的方式指定SQL的执行计划为用户构建的执行计划。

使用说明

OUTLINE功能提供了CREATE,DROP,RESYNC,DISABLE,ENABLE,SHOW指令来创建和管理系统中的OUTLINE,下面对各个指令进行说明。

创建 OUTLINE

CREATE 指令用来创建OUTLINE,创建后默认生效。


  1. CREATE OUTLINE name ON origin_stmt TO target_stmt
  2. name 是指创建的outline名称
  3. origin_stmt 是指用来匹配SQL语句。当SQL不含"?"变量时,匹配必须完全相同,为完全匹配模式;
  4. 当含有"?"变量时,SQL中不能包含常量,并将SQL格式化后来做匹配,为参数化匹配模式
  5. target_stmt 是指用hint方式指定生成逻辑计划的语句

示例一:创建一个完全匹配的OUTLINE。


  1. mysql> create outline t1 on select1 to select2;
  2. Query OK,1 row affected (1.09 sec)

  3. mysql>select1;
  4. +------+
  5. |?    |
  6. +------+
  7. |    2|
  8. +------+

可以看到执行的时候select 1语句被替换为select 2语句了。

示例二:创建一个参数化匹配的OUTLINE。


  1. mysql> create outline t2 on select? to select/*+TDDL:slave()*/*from ms10 where c1=?;
  2. Query OK,1 row affected (0.16 sec)

  3. mysql> explain select1;
  4. +----------------------------------------------------------------------------+
  5. | LOGICAL PLAN                                                               |
  6. +----------------------------------------------------------------------------+
  7. |LogicalView(tables="01.ms10", sql="SELECT * FROM `ms10` WHERE (`c1` = ?)")|
  8. |HitCache:false                                                             |
  9. |UsingOutline: T2                                                           |
  10. +----------------------------------------------------------------------------+

删除 OUTLINE

DROP 指令用来删除指定的OUTLINE。


  1. DROP OUTLINE name
  2. name 是指删除的outline名称

重新同步 OUTLINE

由于DRDS 实例是由多台 Server 组成的,创建 OUTLINE 时,可能会出现同步到其他 Server 报 SYNC error,这时需要从新同步。


  1. RESYNC OUTLINE name
  2. name 是指需要同步的outline名称

停用指定 OUTLINE

DISABLE 指令用来停用指定的OUTLINE。


  1. DISABLE OUTLINE name
  2. name 是指定的outline名称

启用指定 OUTLINE

ENABLE 指令用来启用指定的OUTLINE。


  1. ENABLE OUTLINE name
  2. name 是指定的outline名称

显示系统中的 OUTLINES

SHOW 指令用来显示系统中的OUTLINES。


  1. SHOW OUTLINES

约束

  1. 多语句不支持。
  2. GROUP BY,ORDER BY 不支持’?’绑定变量。
  3. 在参数化匹配模式下,origin_stmt 中不能含有常量。
  4. 在参数化匹配模式下,origin_stmt 和 target_stmt 中含有的绑定变量数必须相等。
  5. 在完全匹配模式下,target_stmt 中不能含有绑定变量。
  6. 创建OUTLINE时,origin_stmt 不能与系统中已经存在的相同。
  7. 创建OUTLINE时, target_stmt 语义必须正确,能正确生成执行计划。
相关文章
|
2月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
238 3
|
6月前
|
SQL 存储 关系型数据库
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
379 1
|
SQL 存储 关系型数据库
关系型数据库SQLserver基本 SQL 操作
【7月更文挑战第28天】
178 4
|
9月前
|
SQL 关系型数据库 分布式数据库
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
利用 PolarDB PG 版向量化引擎,加速复杂 SQL 查询!完成任务领发财新年抱枕!
274 14
|
SQL 安全 关系型数据库
关系型数据库SQL server DELETE 语句
【8月更文挑战第3天】
359 10
|
SQL 关系型数据库 数据库
关系型数据库SQL server UPDATE 语句
【8月更文挑战第3天】
464 10
|
SQL 关系型数据库 BI
关系型数据库SQL server INSERT 语句
【8月更文挑战第3天】
404 9
|
SQL 关系型数据库 数据库
|
SQL 关系型数据库 数据库
|
SQL 存储 关系型数据库
PolarDB-X 1.0-用户指南—SQL调优指南—SQL调优基础概念
在使用PolarDB-X的过程中,可能出现性能不符合预期的慢SQL。SQL调优的过程,就是通过分析SQL的执行计划、各阶段运行时长等信息,找出导致SQL执行慢的原因,继而解决问题。
267 0
PolarDB-X 1.0-用户指南—SQL调优指南—SQL调优基础概念

相关产品

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