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 语义必须正确,能正确生成执行计划。
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到慢SQL问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之sql运行报错是神么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 Serverless
PolarDB产品使用问题之如何控制队列中排队的SQL的等待时间
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之出现部分SQL抛出7543错误,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 缓存 关系型数据库
PolarDB产品使用问题之SQL语句是否可以参数化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 监控 关系型数据库
PolarDB产品使用问题之SQL防火墙怎么拦截没有指定WHERE条件的特定表的SQL语
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之SQL查询该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 自然语言处理 关系型数据库
PolarDB自然语言到SQL语言转义
PolarDB自然语言到SQL语言转义

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 下一篇
    无影云桌面