萌新学习大数据的第一天|青训营笔记

125 阅读3分钟

了解大数据的第一天|青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第1天

一、为什么要学习大数据

简单的说大数据应用广泛 目前大数据已经在很多领域得到了实际应用。医疗,教育,金融,娱乐产业,房地产,体育等等。在多种行业中,大数据可以用来分析用户需求,优化业务流程,从而提高企业应收。而我作为一个萌新小白,接触方向多数是前端后端,却也因此萌发了想要了解探究大数据的想法。再此之前我已经学习了简单的数据库操作。

二、第一天的课程——SQL查询优化器浅析

在第一天上课前我已经提前预习了大数据的相关知识比如说大数据体系,SQL里的执行计划基本流程以及SQL中group-by和join的执行方法。

主要内容常见的查询优化器

在这节课里我们主要学习了几种常见的查询优化器

Top-down Optimizer
从目标输出开始,由上往下遍历计划树,找到完整的最优执行计划。

Button-up Optimizer
从零开始,由上往下遍历计划树,找到完整的执行计划。

Rule-based Optimizer,简称RBO
根据关系代数的等价语义,重写查询,基于启发式规则,会访问表的元信息(catalog),不会涉及具体的表数据。使得目标处理数据更小,查询数据最小。
优化规则:
(1)RBO-列剪裁
(2)RBO-谓词下推
(3)RBO-传递闭包
(4)RBO-Runtime Filter
优点:实现简单,优化速度快。
缺点:不保证得到最优的执行计划。

image.png

Cost-based Optimizer,简称CBO
使用一个模型估计执行计划的代价,选择代价最小的执行计划,执行计划的代价等于所有算子的执行代价之和,通过RBO得到所有可能的等价执行计划。

CBO统计信息
在DDL里指定需要手机的统计信息,数据库会在数据写入时收集或者更新统计信息。
手动执行统计信息 explain analyze statement,触发数据库收集或者更新统计信息。
动态采样 select count(*) from table_name

CBO优化推导规则:
(1) 基表统计信息
表或者分区级别:行数、行平均大小、表在磁盘占用了多少字节等。
列级别:min,max,num nulls,num noy nulls,num distinct vaule,histogram等。
(2)推导统计信息
选择率:对于某一个顾虑条件,查询会从表中返回多大比例的数据。
基数:对查询计划中常指算子需要处理的行数。

CBO-执行计划枚举 贪心以及dp dp—Hash join 还是 SortMerge join(归并堆排) 基于hash的代价以及Hash join 还是 SortMerge join(归并堆排)的代价选最优。 CBO使用代价模型和统计信息估算执行计划的代价 CBO使用贪心或者动态规划算法寻找最优

image.png

三、个人总结

在第一天课里,我了解了许多我不知道的内容以及知识,比如大数据体系和SQL、逻辑计划树、物理执行计划等,对于我自己而言实际已经过了很久也学到了很多大数据相关的内容,希望在以后的日子里我能继续保持着学习的激情,不断成长。

ps:笔记做的很早发布的很晚