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

简介: 在使用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 语义必须正确,能正确生成执行计划。
相关文章
|
SQL 监控 数据库
PolarDB-X 2.0,同一条sql,有时执行200ms,有时8000毫秒,是什么原因,频率很高.?
PolarDB-X 2.0,同一条sql,有时执行200ms,有时8000毫秒,是什么原因,频率很高.?
247 1
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 存储 缓存
PolarDB-X SQL限流
本文首先介绍了SQL限流的使用场景,它可通过限制边缘业务查询,留出资源来为核心业务保驾护航。接着是功能简介,PolarDB-X结合自身云原生分布式的特点,提供了具有简洁易用的交互接口、多样的限流策略、平均复杂度O(1)、节点级限流实例级监控的SQL限流能力。
400 1
PolarDB-X SQL限流
|
Cloud Native 关系型数据库 分布式数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——数据多副本
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——数据多副本自制脑图
378 2
|
存储 Cloud Native 关系型数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——共享分布式存储
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——共享分布式存储自制脑图
399 2
|
关系型数据库 MySQL 数据库
史上最全的MySQL性能手册(优化+SQL+并发+数据库)
史上最全的MySQL性能手册(优化+SQL+并发+数据库)
|
Cloud Native 关系型数据库 分布式数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——高速链路互联
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——高速链路互联自制脑图
357 1
|
Cloud Native 关系型数据库 分布式数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——读写分离
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——读写分离自制脑图
132 1
|
存储 Cloud Native 关系型数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——计算与存储分离
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——计算与存储分离自制脑图
354 1
|
SQL 弹性计算 测试技术
如何在PolarDB-X中优化慢SQL
《PolarDB-X动手实践》系列第六期,本场景带您体验如何使用PolarDB-X提供的解决慢SQL的相关工具。

热门文章

最新文章

相关产品

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