#SQL#构建实时数据仓库首选,云原生数据仓库AnalyticDB for MySQL解密( 二 )


此外 , AnalyticDB优化器还针对复杂查询中经常出现的组合过滤条件、聚合算子、关联子查询等进行了一系列优化处理以提升性能 。 比如下推优化技术将计划中的过滤条件和聚合算子尽量推到整个链路的底层模块去执行 , 不但提高底层算子的效率 , 也减少了上游算子要处理的数据量 , 提高整体查询性能 。 针对关联子查询语句 , 优化器通过关系代数转化 , 将关联子查询改写为语义等价的非关联计划 , 使得计算引擎可以高效流水线处理 。
3.基础版计算引擎
#SQL#构建实时数据仓库首选,云原生数据仓库AnalyticDB for MySQL解密
本文插图
AnalyticDB计算引擎采用大规模并行处理MPP+DAG体系结构和基于内存的pipeline执行模式 , 具有高并发、低延迟的特点 。 为了加快对复杂表达式的求值速度 , 优化执行性能 , 计算引擎通过Runtime Codegen在运行时生成JVM bytecode , 动态加载生成对象的实例 , 减少了执行过程中虚函数调用 , 提高了CPU-Intensive任务的效率 。 计算引擎还采用向量化执行模型处理表达式求值 , 利用CPU SIMD指令集来加速求值计算 。
4.基础版存储引擎
#SQL#构建实时数据仓库首选,云原生数据仓库AnalyticDB for MySQL解密
本文插图
AnalyticDB存储引擎采用行列混合存储的设计 。 如图所示 。 对于一张表的每k行数据(Row Group) , 每列数据连续的存放在单独的Data Block中 , 每行组的列Block的在磁盘上连续存放 。 行组内列Block的数据可按指定列排序存放 , 可以在按该列查询时显著减少磁盘随机IO次数 。 这种设计的独特优势是兼具了行存(适合OLTP点查询)和列存(适合OLAP多维分析)的长处 , 很好的满足了不同类型workload的需求:

  • 针对OLTP类型的点查询需要select出一整行的明细数据 , 行列混存设计下将列存的完全随机读转化为了顺序读
  • 针对OLAP类型的多维分析:不仅解决了海量数据统计分析下行存的读放大问题 , 而且进行单列IO时将列存的顺序读转化为了顺序跳读 , 进行多列IO时则将随机读转化为了顺序读
  • 写入大吞吐:列存时的随机写被转化为了顺序写
AnalyticDB存储引擎采用智能全索引 , 对每列数据建立一个值到行号的倒排索引 。 查询时 , 将SQL多个条件表达式的AND、OR 转换成Boolean Query同时走索引 , 通过搜索得到满足where条件的结果集行号 , 支持快速多路合并 , 能够在毫秒级别找出满足条件的结果集 。
5.基础版优势 基础版大幅度降低了用户构建数据仓库门槛 , 与大数据(Hadoop , Spark和EMR)和OLTP建仓方式相比都有超高的性价比 。
(1)降低使用门槛
基础版最低1.75元/小时 , 860元/月 , 与集群版相比 , 起步价降低了约三分之一 。 磁盘空间仅0.6元/GB , 磁盘空间上限最大为4T , 可以随时按需扩展 , 大大降低中小企业复杂分析和构建实时数仓的使用门槛 。
(2)性能高
同等配置下其数据查询性能约为MySQL的10倍 , 很好地帮助用户解决MySQL复杂分析慢的痛点 。
(3)规格丰富
基础版支持四种规格:T8、T16、T32和T52 , 可以根据业务的不同要求选择规格和任意调整规格 。
(4)生态透明
上下游生态完全兼容集群版 , 对用户透明 。
6.适合客户 特别适合以下人群:
(1)Hadoop/Spark等太复杂 , 想快速实现数据化转型的中小型企业;
(2)报表数据库查询慢 , 有交互式BI分析诉求的中小型企业;
(3)需要快速构建测试环境的进行数仓选型的用户;
(4)学习类人群 , 可快速了解AnalyticDB for MySQL的用户;


推荐阅读