深入了解 TiDB SQL 优化器】的更多相关文章

分享嘉宾:张建 PingCAP TiDB优化器与执行引擎技术负责人 编辑整理:Druid中国用户组第6次大数据MeetUp 出品平台:DataFunTalk 导读: 本次报告张老师主要从原理上带大家深入了解 TiDB SQL 优化器中的关键模块,比如应用一堆逻辑优化规则的逻辑优化部分,基于代价的物理优化部分,还有和代价估算密切相关的统计信息等. 本文将从以下几个方面介绍:首先讲一下TiDB的整体架构,接下来就是优化器的两个比较重要的模块,一个是SQL优化,做执行计划生成:另一个模块就是统计信息模…
https://my.oschina.net/u/1859679?tab=newest&catalogId=597012 上一篇,我们介绍了<DB——数据的读取和存储方式>,这篇聊聊sql优化器的工作. 关系型数据库的一大优势之一,用户无需关心数据的访问方式,因为这些优化器都帮我们处理好了,但sql查询优化的时候,我不得不要对此进行关注,因为这牵扯到查询性能问题. 有经验的程序员都会对一些sql优化了如指掌,比如我们常说的最左匹配原则,非BT谓词规避等等,那么优化器是如何确定这些的?以…
我们提到了两种SQL优化器,分别是RBO和CBO.那么无论是RBO,还是CBO都包含了一系列优化规则,这些优化规则可以对关系表达式进行等价转换,从而寻找最优的执行计划. 那么常见的优化规则就包括: 列裁剪 投影消除 谓词下推 最大最小消除 常量传播 其他 在上述这些优化规则的基础上,就能够对关系表达式做出相应的等价转换,从而生成执行计划.本篇文章先从优化规则的基础概念逻辑算子开始讲起,后续会介绍各个优化规则. 逻辑算子 DataSource:数据源,也就是我们SQL语句中的表.select na…
关系型数据库的一大优势之一,用户无需关心数据的访问方式,因为这些优化器都帮我们处理好了,但sql查询优化的时候,我不得不要对此进行关注,因为这牵扯到查询性能问题. 有经验的程序员都会对一些sql优化了如指掌,比如我们常说的最左匹配原则,非BT谓词规避等等,那么优化器是如何确定这些的?以及为何一定要最左匹配,最左匹配的原理是什么,你是否有深入了解? 这一篇我们就通过一些实例来剖析优化器做了哪些工作,以方便我们更好的优化SQL查询. 本篇你可以知道: sql的访问路径是什么 优化器如何确定最优访问路…
数据库系统发展历史 数据库系统产生于20世纪60年代中期,至今有近50多年的历史,其发展经历了三代演变,造就了四位图灵奖得主,发展成为一门计算机基础学科,带动了一个巨大的软件产业. 数据库系统是操作系统之上最重要的基础设施之一,被称为软件产业的常青树,特别是它所支撑起来的大数据.人工智能应用,更是发展迅猛. 面对发展快速的数据库领域,以及人类所拥有的数据量爆发式增长,如何对海量数据进行管理.分析.挖掘便变得尤为重要.SQL优化器正是为了解决以上问题而诞生的. 查询优化器简介 SQL优化器,其中最…
京东云TiDB SQL层的背景介绍 从总体上概括 TiDB 和 MySQL 兼容策略,如下表: SQL层的架构 用户的 SQL 请求会直接或者通过 Load Balancer 发送到 京东云TiDB Server,TiDB Server 会解析 MySQL Protocol Packet,获取请求内容,对 SQL 进行语法解析和语义分析,制定和优化查询计划,执行查询计划并获取和处理数据.数据全部存储在 TiKV 集群中,所以在这个过程中 TiDB Server 需要和 TiKV 交互,获取数据.…
目录 一.Oracle的优化器 1.1 优化器简介 1.2 SQL执行过程 二.优化器优化方式 2.1 优化器的优化方式 2.2 基于规则的优化器 2.3 基于成本的优化器 三.优化器优化模式 3.1 优化器优化模式分类 3.2 优化模式使用方法 在看<基于Oracle的SQL优化一书>知道了很多专业名称,做了记录,CBO.优化器.查询转换.执行计划.Hint.并行.游标.绑定变量.统计信息.直方图.索引等等.这篇博客可以说是读书笔记 一.Oracle的优化器 1.1 优化器简介 优化器(Op…
SQL优化是我们经常会遇到的问题,无论你是专职的数据分析人员还是全栈开发大神或者是CURD搬运工. 我们在工作中经常会听到这样的声音:“查询慢?加个索引吧”.虽然加索引并不一定能解决问题,但是这体现了SQL优化的思想. 而数据库主要由三部分组成,分别是解析器.优化器和执行引擎. 其执行逻辑是我们输入的SQL语句通过解析器解析成关系表达式,通过优化器把关系表达式转换成执行计划,最终通过执行引擎进行执行.所以优化器在很大程度上决定了一个系统的性能.优化器的作用就好比找到两点之间的最短路径. 上篇文章…
文章导读: 什么是RBO? 什么是CBO? 我们在工作中经常会听到这样的声音:"SQL查询慢?你给数据库加个索引啊".虽然加索引并不一定能解决问题,但是这初步的体现了SQL优化的思想. 而数据库主要由三部分组成,分别是解析器.优化器和执行引擎. 其执行逻辑是我们输入的SQL语句通过解析器解析成关系表达式,通过优化器把关系表达式转换成执行计划,最终通过执行引擎进行执行.所以优化器在很大程度上决定了一个系统的性能.优化器的作用就好比找到两点之间的最短路径. 上篇文章我们提到了Calcite…
select emp.*,dept.* from tb_emp03 emp,tb_dept03 dept where emp.deptno=dept.id -- 不加hint SQL> select emp.*,dept.* from tb_emp03 emp,tb_dept03 dept where emp.deptno=dept.id ; 已用时间: 00: 00: 00.00 执行计划 ----------------------------------------------------…