SQL Optimizer的语法是什么


这篇文章主要介绍“SQLOptimizer的语法是什么”,在日常操作中,相信很多人在SQLOptimizer的语法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQLOptimizer的语法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!String -> AST(Abstruct Syntax Tree):词法分析:拆分字符串,得到关键词、数值常量、字符串常量、运算符号等token语法分析:将token组成ASTnode,最终得到一个AST实现:递归下降 (ClickHouse),Flex 和 Bison (PostgreSQL),JavaCC (Flink),Antlr (Presto,Spark)Analyzer:检查并绑定Database, Table, Column等元信息SQL的合法性检查,比如min/max/avg的输入是数值AST -> Logical PlanLogical Plan:逻辑地描述SQL对应的分步骤计算操作计算操作:算子( operator )Physical Plan: 执行计划子树目标:最小化网络数据传输利用上数据的物理分布(数据亲和性)增加Shuffle算子Executor单机并行: cache,pipeline, SIMD多机并行: 一个fragment对应多个实例One SQL rules big data allSQL 需要依次经过Parser,Analyzer,Optimizer和Executor的处理查询优化器是数据库的大脑,在大数据场景下对查询性能至关重要查询优化器需要感知数据分布,充分利用数据的亲和性查询优化器按照最小化网络数据传输的目标把逻辑计划拆分成多个物理计划片段运算符:Select Project Join Rename Union等价变换:结合律、交换律、传递性扫描表格中所需要的列,而不是全部where的表达式是谓词。谓词尽快过滤数据,减少开销2(条件:join是inter)根据表达式等价关系,过滤条件,推导出一个新的过滤条件对一个join如果能在查询端提早过滤不必要数据,可减少开销min-max的缺点:范围必须很紧密in-list:只需要扫描in-list里的数据。缺点:集合个数很多时,in-list也很大bloom filter:特性:大小不随集合大小改变,固定大小,给一个数可以判断在不在主流RBO实现一般都有几百条基于经验归纳得到的优化规则优点:实现简单,优化速度快缺点:不保证得到最优的执行计划△使用一个模型估算执行计划的代价,选择代价最小的执行计划执行计划的代价等于所有算子的执行代价之和通过RBO得到(所有)可能的等价执行计划△算子代价:CPU,内存,磁盘IO,网络I/O等代价统计信息+推导规则→计算算子代价→计算执行计划代价→执行计划枚举原始表统计信息表或者分区级别:行数、行平均大小、表在磁盘中占用了多少字节等列级别: min、max、num nulls、num not nulls、num distinct value(NDV)、histogram 等推导统计信息选择率( selecthwty):对于某一个过滤条件查询会从表中返回多大比例的数据基数( careinality ):在查询计划中常指算子需要处理的行数3.2.1 CBO-统计信息的收集方式在DDL里指定需要收集的统计信息,数据库会在数据写入时收集或者更新统计信息CREATE TABLE REGION( R_ REGIONKEY INT NOT NULL, R NAME CHAR(25) NOT NULL, R_ COMMENT VARCHAR(152) ) DUPLICATE KEY(R_ REGIONKEY) DISTRIBUTED BY HASH(R_ REGIONKEY) BUCKETS 1 PROPERTIES (” sotumnselelR w”);手动执行explain analyze statement,出发数据库收集或者更新统计信息ANALYZE TABLE table_name COMPUTE STATISICS FOR COLUMNS column-name1,column-name2....动态采样:S免费云主机域名ELECT count(*) FROM table_name3.2.2 CBO-统计信息推导规则Filter Selectivityliteral max : 01/NDVAND条件:fs(a AND b)=fs(a)* fs(b)OR条件: fs(a OR b) = fs(a) + fs(b) – (fs(a) * fs(b))NOT条件: fs(NOT a)= 1.0 – fs(a)等于条件(x = literal )小于条件(x literal<0>

相关推荐: Python+Pygame怎么实现吃豆豆游戏

这篇文章主要介绍了Python+Pygame怎么实现吃豆豆游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python+Pygame怎么实现吃豆豆游戏文章都会有所收获,下面我们一起来看看吧。1)素材首先找到吃豆豆游戏的界面按照上…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/28 21:11
下一篇 03/28 21:11

相关推荐