统一SQL平台-加速-预计算-Calcite-Lattice 设计与实现
一、概述为了加速在线分析处理,除了物化视图,Calcite 还引入 Lattice 和 Tile 的概念。Lattice 通过定义 model 的方式,来描述星型查询,之后通过 model 自动生成多个物化结果,查询改写时会使用这些物化结果。Lattice 可以看做是在星型数据模型下对物化视图的推荐、创建和识别的机制。这种推荐可以根据查询的频次统计,也可以基于某些分析维度的重要等级。
二、测试创建一个包含 Lattice 格的模型:
123456789101112131415161718192021222324252627282930{ "version": "1.0", "defaultSchema": "foodmart", "schemas": [ { "type": "jdbc", "name": "foodmart", "jdbcUser&quo ...
统一SQL平台-加速-物化视图设计与实现-StarRocks
一、概述物化视图 (Materialized View) 是一种特殊的物理表,本质是预计算,把某些耗时的操作(例如JOIN、AGGREGATE)的结果保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终达到加速查询的目的,即空间换时间。而普通视图(View)**仅是简化用户的查询定义,不存储实际结果数据。
统一SQL平台-加速-物化视图设计与实现-Calcite
一、概述物化视图 (Materialized View) 是一种特殊的物理表,本质是预计算,把某些耗时的操作(例如JOIN、AGGREGATE)的结果保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终达到加速查询的目的,即空间换时间。而普通视图(View)**仅是简化用户的查询定义,不存储实际结果数据。
二、实现2.1. 引擎维护一些 Calcite 适配器以及依赖于 Calcite 的项目具有自己的物化视图概念,允许用户基于现有表定义物化视图,适配器会自动将这些物化视图暴露给 Calcite。
当在 Hive 中创建物化视图时,用户可以指定视图是否可以在查询优化中使用。如果用户选择这样做,物化视图将在 Calcite 中注册。通过在Calcite 中注册物化视图,优化器有机会自动重写查询以使用这些视图~
2.1.1. 物化视图注册Calcite Model 可基于 Json 文件定义 Schema,用于描述数据源中 Schema的相关信息,在 model 文件中,可以配置 Materize View SQL,然后 Calcite 会将 MV 的 SQL 解析成 ...
统一SQL平台-加速-物化视图设计与实现-视图改写
一、概述早期使用物化视图时,通常需要人工修改查询 SQL,显式在 SQL 中指定使用物化视图。支持自动查询修改功能后,物化视图自动查询改写功能将自动、透明的重写查询 SQL,使查询 SQL 可以使用物化视图(即使查询SQL本身指定的是查询基表而非物化视图),从而加速查询 SQL 的运行。
https://developer.aliyun.com/article/783672?spm=a2c6h.14164896.0.0.75b052840Ff9B1
二、查询改写检查一个查询能被视图回答需要满足下面两个条件:
物化视图 Join 关系在查询中存在
物化视图有足够的数据来回答查询
部分条件下即使不满足条件,视图也可能会被用于改写。例如视图包含一部分查询所需要的数据,可以使用物化视图回答部分查询,剩下的数据从原始数据中计算。这部分改写检查会放在高级改写规则中进行介绍。
改写检查会依次进行 Join 检查和 Ouput 检查,如果查询或视图中含有 Grouping By 和 Aggregation,还会进行额外的检查,如果需要,会尝试对视图进一步聚合。
2.1. Join 检查当查询和 ...
统一SQL平台-加速-物化视图设计与实现
一、概述物化视图 (Materialized View) 是一种特殊的物理表,本质是预计算,把某些耗时的操作(例如JOIN、AGGREGATE)的结果保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终达到加速查询的目的,即空间换时间。而普通视图(View)**仅是简化用户的查询定义,不存储实际结果数据。
1.1. 优/缺点1.1.1. 优点
提高查询性能:对于复杂的查询,由于物化视图存储了查询结果,可以直接从物化视图中读取数据,提高了查询效率。
应急查询:物化视图允许用户在数据库服务器关闭或网络连接中断时,仍然可以访问和分析数据。
1.1.2. 缺点
存储空间:物化视图需要额外的存储空间来保存查询结果。
数据更新:如果底层数据频繁变动,物化视图需要定期刷新,这可能会增加维护成本。
物化视图使用得当能够数倍,甚至数十倍提升查询性能,但其也不是万能的,如果不分场景盲目创建物化视图。一方面是因为物化视图的创建和更新有成本,另一方面,判定 SQL 是否命中的逻辑也在性能敏感的代码路径上引入了额外的耗时。
使用物化视图的效果评价需要考虑2个方面:首先,其是否带来了查询的性能 ...
统一SQL平台-统一语法解析-Calcite
一、概述语法解析是SQL处理的前提和基础,目前由于不同的计算引擎SQL方言不同,因此SQL解析处理模式也大相径庭。从整体上看,SQL解析将SQL转为AST抽象语法树,该语法树是朴素的,无元数据绑定的,也无法直接进行查询优化。但基于语法树遍历,也可以挖掘丰富的SQL执行信息,如目标库表、数据血缘、防御SQL注入攻击、热度分析等。除此之外,基于语法树也可以进行SQL改写处理,识别特定节点并变更后,再将语法树转为改写后的SQL执行。
统一SQL平台
一、概述
二、统一语法解析三、加速在数据库操作中,人们往往希望在调用数据库查询接口时,能够更快地获取查询结果。这个需求的实现往往需要通盘考虑表的索引选择、扫描范围、CPU和内存使用状态、网络和硬盘 I/O 的情况等。尤其是在支持SQL语句这种复杂的数据库操作语言时,查询语句产生的执行计划往往会非常复杂,如何采用最优的查询策略,更快地获取数据就成为数据库需要解决的核心问题。
3.1. 索引3.1.1. B+树索引3.1.2. 倒排索引3.1.3. 哈希索引3.2. 缓存3.3. 预计算3.3.1. Roll Up3.3.2. 物化视图物化视图 (Materialized View) 是一种特殊的物理表,本质是预计算,把某些耗时的操作(例如JOIN、AGGREGATE)的结果保存到物理存储上,可以像表一样被访问,以便在后续查询时直接复用,最终达到加速查询的目的,即空间换时间。而普通视图(View)**仅是简化用户的查询定义,不存储实际结果数据。
引用本站文章
统一S ...