当前位置: 首页 > news >正文

doris:异步物化视图概述

物化视图作为一种高效的解决方案,兼具了视图的灵活性和物理表的高性能优势。 它能够预先计算并存储查询的结果集,从而在查询请求到达时,直接从已存储的物化视图中快速获取结果,避免了重新执行复杂的查询语句所带来的开销。

使用场景​

  • 查询加速与并发提升:物化视图能够显著提高查询速度,同时增强系统的并发处理能力,有效减少资源消耗。
  • 简化 ETL 流程:在数据抽取、转换和加载(ETL)过程中,物化视图能够简化流程,提升开发效率,使数据处理更加顺畅。
  • 加速湖仓一体架构中的外表查询:在湖仓一体架构中,物化视图能够显著提升对外部数据源的查询速度,提高数据访问效率。
  • 提升写入效率:通过减少资源竞争,物化视图能够优化数据写入过程,提高写入效率,确保数据的一致性和完整性。

使用限制​

  • 异步物化视图与基表数据一致性:异步物化视图与基表的数据最终会保持一致,但无法实时同步,即无法保持实时一致性。
  • 窗口函数查询支持:当前,如果查询中包含了窗口函数,暂不支持将该查询透明地改写为利用物化视图的形式。
  • 物化视图连接表多于查询表:如果物化视图所连接的表数量多于查询所涉及的表(例如,查询仅涉及 t1 和 t2,而物化视图则包含了 t1、t2 以及额外的 t3), 则系统目前不支持将该查询透明地改写为利用该物化视图的形式。
  • 如果物化视图包含 UNION ALL 等集合操作,LIMIT,ORDER BY,CROSS JOIN,物化视图可以正常构建,但是不能用于透明改写。

原理介绍​

物化视图,作为数据库中的一种高级特性,其实质为类型 MTMV 的内表。在创建物化视图时,系统会同时注册一个刷新任务。此任务会在需要时运行,执行 INSERT OVERWRITE 语句,以将最新的数据写入物化视图中。

刷新机制 与同步物化视图所采用的实时增量刷新不同,异步物化视图提供了更为灵活的刷新选项

  • 全量刷新: 在此模式下,系统会重新计算物化视图定义 SQL 所涉及的所有数据,并将结果完整地写入物化视图。 此过程确保了物化视图中的数据与基表数据保持一致,但可能会消耗更多的计算资源和时间。

  • 分区增量刷新: 当物化视图的基表分区数据发生变化时,系统能够智能地识别出这些变化,并仅针对受影响的分区进行刷新。 这种机制显著降低了刷新物化视图所需的计算资源和时间,同时保证了数据的最终一致性。

透明改写: 透明改写是数据库优化查询性能的一种重要手段。在处理用户查询时,系统能够自动对 SQL 进行优化和改写, 以提高查询的执行效率和降低计算成本。这一改写过程对用户而言是透明的,无需用户进行任何干预。

Doris 异步物化视图采用了基于 SPJG(SELECT-PROJECT-JOIN-GROUP-BY)模式的透明改写算法。 该算法能够深入分析 SQL 的结构信息,自动寻找并选择合适的物化视图进行透明改写。在多个物化视图可供选择时, 算法还会根据一定的策略(如成本模型)选择最优的物化视图来响应查询 SQL,从而进一步提升查询性能。

物化刷新数据湖支持情况​

物化刷新数据湖的支持情况,不同类型的表和 Catalog 有不同的支持程度

表类型Catalog 类型刷新方式刷新时机
全量刷新分区刷新自动触发
内表Internal2.1 支持2.1 支持2.1.4 支持
HiveHive2.1 支持2.1 支持不支持
IcebergIceberg2.1 支持不支持不支持
PaimonPaimon2.1 支持不支持不支持
HudiHudi2.1 支持不支持不支持
JDBCJDBC2.1 支持不支持不支持
ESES2.1 支持不支持不支持

物化视图和 OLAP 内表关系​

异步物化视图定义 SQL 使用基表的表模型没有限制,可以是明细模型,主键模型(merge-on-write 和 merge-on-read),聚合模型等。

物化视图自身的底层实现依托于 Duplicate 模型的 OLAP 表,这一设计使其理论上能够支持 Duplicate 模型的所有核心功能。然而, 为了保障物化视图能够稳定且高效地执行数据刷新任务,我们对其功能进行了一系列必要的限制。以下是具体的限制内容:

  • 物化视图的分区是基于其基表自动创建和维护的,因此用户不能对物化视图进行分区操作
  • 由于物化视图背后有相关的作业(JOB)需要处理,所以不能使用删除表(DELETE TABLE)或重命名表(RENAME TABLE)的命令来操作物化视图。 相反,需要使用物化视图自身的命令来进行这些操作。
  • 物化视图的列数据类型是根据创建时指定的查询语句自动推导得出的,因此这些数据类型不能被修改。否则,可能会导致物化视图的刷新任务失败。
  • 物化视图具有一些 Duplicate 表没有的属性(property),这些属性需要通过物化视图的命令进行修改。 而其他公用的属性则需要使用 ALTER TABLE 命令进行修改。

相关文章:

doris:异步物化视图概述

物化视图作为一种高效的解决方案,兼具了视图的灵活性和物理表的高性能优势。 它能够预先计算并存储查询的结果集,从而在查询请求到达时,直接从已存储的物化视图中快速获取结果,避免了重新执行复杂的查询语句所带来的开销。 使用场…...

图像缩放的双线性插值实现方式

1、双线性插值概念 双线性插值是一种用于在二维网格上进行插值的方法,适用于图像处理、计算机图形学等领域。它通过利用四个邻近点的已知值,估算出任意点的值。双线性插值在两个方向(通常是水平和垂直)上分别进行线性插值&#x…...

深入剖析 Vue 的响应式原理:构建高效 Web 应用的基石

深入剖析 Vue 的响应式原理:构建高效 Web 应用的基石 在前端开发的广阔天地里,Vue.js 凭借其简洁易用的特性和强大的功能,成为众多开发者的心头好。其中,响应式原理作为 Vue 的核心亮点之一,让数据与视图之间实现了高…...

40.日常算法

1.无重复字符的最长子串 题目来源 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 class Solution { public:int lengthOfL…...

CAS单点登录(第7版)11.SSO SLO

如有疑问,请看视频:CAS单点登录(第7版) SSO & SLO 安装IDEA Download IntelliJ IDEA – The IDE for Professional Development in Java and Kotlin 安装Maven Download Apache Maven – Maven MAVEN_HOMED:\apache-maven…...

Bob the Canadian

1:around the house Hi! Bob the Canadian here! Let’s learn English around the house. Come on in! Hi, Bob the Canadian here. Welcome to this video. If this is your first time here, don’t forget to click the subscribe button below, and give…...

CAS单点登录(第7版)16.模仿

如有疑问,请看视频:CAS单点登录(第7版) 模仿 概述 代理身份验证 代理身份验证(模拟),有时称为 Web 的 sudo,是代表其他用户进行身份验证的能力。 在这种情况下,两个参…...

预留:大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)

传送门目录 前期准备 一、JDK的安装 1、安装jdk 2、配置Java环境变量 3、加载环境变量 4、进行校验 二、hadoop的集群搭建 1、hadoop的下载安装 2、配置文件设置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置hdfs-site.xml 2.4. 配置 yarn-site.xm…...

RabbitMQ介绍以及基本使用

文章目录 一、什么是消息队列? 二、消息队列的作用(优点) 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…...

C++演示中介模式

避免两个模块之间的耦合&#xff0c;使用中介模式解决。下面是C代码 #include <iostream> #include <vector>using namespace std;class client;//中介 class mediator { public:void addclient(client* client) {clientVec.push_back(client);}void send(const s…...

Vue的简单入门 一

声明&#xff1a;本版块根据B站学习&#xff0c;创建的是vue3项目&#xff0c;用的是vue2语法风格&#xff0c;仅供初学者学习。 目录 一、Vue项目的创建 1.已安装15.0或更高版本的Node.js 2.创建项目 二、 简单认识目录结构 三、模块语法中的指令 1.v-html 1.文本插值…...

【免费送书活动】《MySQL 9从入门到性能优化(视频教学版)》

本博主免费赠送读者3本书&#xff0c;书名为《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;》。 《MySQL 9从入门到性能优化&#xff08;视频教学版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 这本书已经公开…...

export default与export区别

1.定义&#xff1a; export default‌&#xff1a;用于导出模块中的默认成员。一个模块中只能有一个export default&#xff0c;通常用于导出模块的主要功能或对象。导入时可以使用任意名称&#xff0c;因为它没有具体的名称‌ ‌export‌&#xff1a;用于导出模块中的多个成…...

最佳的出牌方法

最佳的出牌方法 真题目录: 点击去查看 E 卷 200分题型 题目描述 手上有一副扑克牌,每张牌按牌面数字记分(J=11,Q=12,K=13,没有大小王),出牌时按照以下规则记分: 出单张,记牌面分数,例如出一张2,得分为2出对或3张,记牌面分数总和再x2,例如出3张3,得分为(3+3+3)x2=1…...

Kotlin 2.1.0 入门教程(二十一)数据类

数据类 数据类主要用于存储数据。 对于每个数据类&#xff0c;编译器会自动生成一些额外的成员函数&#xff0c;这些函数支持将实例打印为易读的输出、比较实例、复制实例等操作。 数据类使用 data 关键字标记&#xff1a; data class User(val name: String, val age: Int…...

30天开发操作系统 第 20 天 -- API

前言 大家早上好&#xff0c;今天我们继续努力哦。 昨天我们已经实现了应用程序的运行, 今天我们来实现由应用程序对操作系统功能的调用(即API, 也叫系统调用)。 为什么这样的功能称为“系统调用”(system call)呢&#xff1f;因为它是由应用程序来调用(操作)系统中的功能来完…...

WEB安全--SQL注入--floor报错注入

一、原理&#xff1a; floor()报错注入需要组合count()、rand()、group by()等函数使用&#xff0c;通过一些手段使数据库在处理语句时产生主键重复的报错&#xff0c;从而达到爆出信息的目的 二、内容&#xff1a; ?id-1 or (select 1 from (select count(*),concat(databa…...

【java面向对象的三大特性】封装、继承和多态

目录标题 一、封装&#xff08;Encapsulation&#xff09;&#xff1a;二、继承&#xff08;Inheritance&#xff09;&#xff1a;三、多态&#xff08;Polymorphism&#xff09;&#xff1a;1. 多态的三个必要条件&#xff1a;2.多态的具体实现&#xff1a;3.多态的使用场景&a…...

Hermite 插值

Hermite 插值 不少实际问题不但要求在节点上函数值相等&#xff0c;而且还要求它的导数值相等&#xff0c;甚至要求高阶导数值也相等。满足这种要求的插值多项式就是 Hermite 插值多项式。 下面只讨论函数值与导数值个数相等的情况。设在节点 a ≤ x 0 < x 1 < ⋯ <…...

【推理llm论文精度】DeepSeek-R1:强化学习驱动LLM推理能力飞跃

最近deepseek R1模型大火&#xff0c;正好复习一下他家的技惊四座的论文https://arxiv.org/pdf/2501.12948 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;在推理能力上取得了显著进展&#xff0c;但如何进一步有效提升仍然是研究热点。DeepSeek-AI发布了 DeepS…...

设计模式(C++)-行为型模式-备忘录模式

设计模式(C)-行为型模式-备忘录模式 一、备忘录模式概述 备忘录模式是一种行为型模式&#xff0c;允许在不破坏封装性的前提下&#xff0c;捕获并保存一个对象的内部状态&#xff0c;以便以后可以恢复到这个状态。 核心思想&#xff1a; 三个关键角色&#xff1a; 1. Originato…...

Apache Airflow 系列教程 | 第11课:XCom 与任务间通信机制

导读(Introduction) 欢迎来到 Apache Airflow 源码深度解析系列的第十一课。 在前两课中,我们学习了 TaskFlow API 的装饰器体系(第9课)和 Operator/Sensor/Hook 的设计模式(第10课)。在这两课中,一个概念反复出现但从未被深入剖析——XCom(Cross-Communication)。…...

QMCDecode:3分钟解锁QQ音乐加密文件,让音乐自由播放

QMCDecode&#xff1a;3分钟解锁QQ音乐加密文件&#xff0c;让音乐自由播放 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xf…...

FigmaCN中文界面插件:3分钟免费实现Figma界面全中文化的终极指南

FigmaCN中文界面插件&#xff1a;3分钟免费实现Figma界面全中文化的终极指南 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗&#xff1f;专业术语看不懂…...

mysql如何实现读写分离的权限分配_不同用户分别赋予权限

读用户仅授SELECT权限&#xff0c;写用户授SELECT/INSERT/UPDATE/DELETE&#xff0c;禁用系统库权限&#xff0c;REPLICATION SLAVE仅用于从库同步&#xff0c;权限变更需重连生效&#xff0c;跨库查询须显式授权。只给读用户 SELECT 权限&#xff0c;别碰 INSERT/UPDATE/DELET…...

从数据垃圾到黄金数据集:手把手教你用rosbag filter和脚本高效清洗机器人日志

从数据垃圾到黄金数据集&#xff1a;工程化清洗机器人日志的进阶实践 当你的硬盘里堆满了数百GB的rosbag文件&#xff0c;每次打开都像在垃圾堆里翻找钥匙——这种体验机器人工程师都不陌生。真正的问题不在于数据收集&#xff0c;而在于如何从这些杂乱的时间序列中提取出算法…...

智能矩阵大灯核心技术解析:从图形MCU到百万像素LED驱动的工程实践

1. 项目概述&#xff1a;从“照亮”到“沟通”的智能车灯革命如果你和我一样&#xff0c;在汽车电子行业摸爬滚打了十几年&#xff0c;就会深刻感受到&#xff0c;汽车安全的演进史&#xff0c;本质上是一部感知与交互技术的进化史。从最初的被动安全&#xff08;安全带、气囊&…...

告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)

告别CANoe&#xff1f;用PythonPCAN实现汽车诊断自动化的实战指南 在汽车电子开发与测试领域&#xff0c;诊断协议一直是工程师们绕不开的核心技术。传统方案中&#xff0c;Vector CANoe凭借其完善的UDS诊断功能成为行业标配&#xff0c;但动辄数万的授权费用让许多个人开发者和…...

软件测试核心知识点梳理(包括黑盒测试,白盒测试,抽卡,通行证测试用例等)

一、黑盒测试与白盒测试核心区别黑盒测试&#xff1a;关注软件 “做什么”&#xff08;外部行为&#xff09;&#xff0c;不关心内部结构&#xff0c;如同测试一个密封的黑盒子。白盒测试&#xff1a;关注软件 “怎么做”&#xff08;内部逻辑&#xff09;&#xff0c;需要查看…...

GB28181语音对讲实战:从SIP信令到PCMA音频流的完整抓包分析(附C++代码示例)

GB28181语音对讲实战&#xff1a;从SIP信令到PCMA音频流的完整抓包分析&#xff08;附C代码示例&#xff09; 在视频监控系统的开发中&#xff0c;语音对讲功能往往是实现双向实时通信的关键环节。GB28181标准作为国内广泛应用的视频监控联网标准&#xff0c;其语音对讲功能基于…...