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

doris - 数仓 拉链表 按天全量打宽表性能优化

数仓 拉链表 按天全量打宽性能优化

  • 现状描述
  • 优化

现状描述

1、业务历史数据可以变更
2、拉链表按天打宽
3、拉链表模型分区字段设计不合理,通用的过滤字段没有作为分区分桶字段
4、拉链表表数据量略大、模型数据分区不合理和服务器资源限制,计算任务执行超时【3-4年,用户数:132W】
5、基于拉链表打宽后的天表行转列【最多列达到300列】,sum(case when … end),没有提前过滤数据

优化

1、完善模型设计,设计主键和分桶字段

1)在单表计算:若大表存放多种类型数据,数据分类字段要做为分区或分桶字段,可以实现数据快速过滤
2)多表关联:在大表合理设置了主键、分区或分桶的前提下,建议把关联字段做份分区或分桶字段【要综合考虑验证,设置过多分区分桶字段可能也会影响数据性能】

2、提前进行数据过滤和分级分类计算
前提:拉链表数据量较大或打宽后数据量较大

1)若拉链表数据量较大且包含多种类型数据,需要进行打宽表处理【一条打宽成多条】,那么打宽表后的数据量会翻几倍甚至更多从而导致性能很慢或者执行超时;
》》》建议1:在打宽的过程中按类别均匀拆分数据打宽到多个临时表
》》》建议2:增加任务并行度【在资源允许的前提下,大部分任务提高并发度可以解决性能问题:set parallel_fragment_exec_instance_num=8;】2)若拉链表数据量较大【同一种类型数据】,需要进行打宽表处理【一条打宽成多条】,那么打宽表后的数据量会翻几倍甚至更多从而导致性能很慢或者执行超时;
》》》建议1:在打宽的过程中可以按时间拆分为当前和历史数据表【数据归档处理】
》》》建议2:增加任务并行度【在资源允许的前提下,大部分任务提高并发度可以解决性能问题:set parallel_fragment_exec_instance_num=8;】

3)若拉链表打宽后不同类型数据在下游计算逻辑不一致,建议根据数据类型或其他类型拆分数据

在这里插入图片描述
3、根据指标需求进行热点数据特殊优化
前提:资源有限,1个并发度运行

1)拉链表按分类拆分【过滤】后再按天打宽到多个宽表;
2)计算逻辑:计算第1-150天和150+的数据,打宽成151行;
》》》可以分两类计算:第一类计算第1-150天【150列】再关联计算150+列
3)若按以上逻辑计算任务还是执行超时,把数据拆分当前表和历史表,使用两个insert 

相关文章:

doris - 数仓 拉链表 按天全量打宽表性能优化

数仓 拉链表 按天全量打宽性能优化现状描述优化现状描述 1、业务历史数据可以变更 2、拉链表按天打宽 3、拉链表模型分区字段设计不合理,通用的过滤字段没有作为分区分桶字段 4、拉链表表数据量略大、模型数据分区不合理和服务器资源限制,计算任务执行超…...

服务器虚拟化及优势

服务器虚拟化是从一台物理服务器创建多个服务器实例的过程。每个服务器实例代表一个隔离的虚拟环境。在每个虚拟环境中,都可以运行单独的操作系统。 1.更有效的资源调配 使用虚拟化技术大大节省了所占用的空间,减少了数据中心里服务器和相关硬件的数量。…...

华为ensp模拟校园网/企业网实例(同城灾备及异地备份中心保证网络安全)

文章简介:本文用华为ensp对企业网络进行了规划和模拟,也同样适用于校园、医院等场景。如有需要可联系作者,可以根据定制化需求做修改。作者简介:网络工程师,希望能认识更多的小伙伴一起交流,私信必回。一、…...

git命令篇(持续更新中)

首先介绍这个网页&#xff1a;https://learngitbranching.js.org/?localezh_CN --提交命令 git commit --创建分支 git branch <分支名> --切换分支 git checkout <分支名> --合并分支 (合并到主分支去&#xff0c;把我合并到谁的身上去) 自己写的分支合并到主线…...

用记事本实现“HelloWorld”输出

一、在任意文件夹中创建一个新的文本文档文件并写入以下代码 public class Hello{public static void main (String[] args){System.out.print("Hello,World!");} } 二、修改文件名称及文件类型为 Hello.java 特别注意&#xff1a;文件命名必须与代码中类的名称相同…...

Python基础1

1. 注释 单行注释&#xff1a;以#开头。一般建议注释和内容用空格隔开。 多行注释&#xff1a;以一对三个双引号括起来的内容是注释。“““示例注释”””。 2. 数据类型 验证数据类型的方法&#xff1a;type&#xff08;被查看类型的数据&#xff09;。 注意&#xff1a;…...

4.2 双点双向路由重发布

1. 实验目的 熟悉双点双向路由重发布的应用场景掌握双点双向路由重发布的配置方法2. 实验拓扑 双点双向路由重发布如图4-6所示: 图4-6:双点双向路由重发布 3. 实验步骤 IP地址的配置R1的配置 <Huawei>system-v…...

AcWing《蓝桥杯集训·每日一题》—— 3768 字符串删减

AcWing《蓝桥杯集训每日一题》—— 3768. 字符串删减 文章目录AcWing《蓝桥杯集训每日一题》—— 3768. 字符串删减一、题目二、解题思路三、代码实现本次博客我是通过Notion软件写的&#xff0c;转md文件可能不太美观&#xff0c;大家可以去我的博客中查看&#xff1a;北天的 …...

第五天笔记

1. 简述图片验证码使用流程&#xff1f; 1.前段生成UUID随机值&#xff0c;作为GET请求参数 2.后端试图进行判断&#xff0c;调用工具类来生成图片验证码和内容 3.将验证码内容使用redis保存到本地,前端传入的uuid作为key, 4.在前段输入获取到的图片验证码&#xff0c;想后端发…...

如何使用ArcGIS进行地理配准

1.概述 对于GIS数据而言&#xff0c;坐标信息是灵魂&#xff0c;有了坐标信息之后才能和别的数据结合使用&#xff0c;之前有介绍过矢量数据定义坐标信息的方法&#xff0c;针对栅格图&#xff0c;这里为大家介绍一下通过地理配准增加坐标信息的方法&#xff0c;希望能对你有所…...

【java基础知识】

Java中的基本数据类型是什么&#xff1f; byte&#xff1a;1字节&#xff0c;有符号&#xff0c;表示整数&#xff0c;范围为-128到127。short&#xff1a;2字节&#xff0c;有符号&#xff0c;表示整数&#xff0c;范围为-32768到32767。int&#xff1a;4字节&#xff0c;有符…...

Java提供了哪些IO方式? NIO如何实现多路复用?

第11讲 | Java提供了哪些IO方式&#xff1f; NIO如何实现多路复用&#xff1f; IO 一直是软件开发中的核心部分之一&#xff0c;伴随着海量数据增长和分布式系统的发展&#xff0c;IO 扩展能力愈发重要。幸运的是&#xff0c;Java 平台 IO 机制经过不断完善&#xff0c;虽然在某…...

人的大脑遇事的思考解决过程

人遇到问题的思考解决过程&#xff0c;大概如下&#xff1a;1&#xff09; 遇到问题&#xff1b;2&#xff09; 首先&#xff0c;不是直接推理&#xff0c;而是用直觉在自己的知识模式库里搜索&#xff0c;有没有相似的模式或者相同的模式。3&#xff09; 如果&#xff1a;3a)有…...

GNU zlib 压缩与解压文件详细介绍

GNU zlib 压缩与解压文件详细介绍 1.概述 zlib 模块为 GNU 项目的 zlib 压缩库中的许多函数提供了一个低级接口 2.使用内存数据压缩与解压 2.1.压缩与解压缩 使用 zlib 的最简单方法是将所有数据保存在内存中进行压缩或解压缩。 import zlib import binasciioriginal_dat…...

离线环境轻量级自动化部署

流程图&#xff1a; 常规系统发布的痛点 服务器频繁重启&#xff0c;上面部署的应用服务不能随之重启&#xff0c;导致服务时常宕机应用手动部署相对比较麻烦&#xff0c;步骤繁琐应用发布环境取决于发布人本地环境&#xff0c;导致不同发布人每次发布环境不一致&#xff0c;导…...

In-context Learning

formulate the example query -> LLM -> answerno gradient descent and fine-tuning, no parameters updateadvantages: 提供了与LLM进行交流的可解释的接口&#xff0c;通过template和demonstration将人类知识和LLM更好的结合&#xff1b;更像人类的预测思维&#xff…...

【新2023】华为OD机试 - 最优调度策略(Python)

华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 最优调度策略 题目 在通信系统中有一个常见的问题是对用户进行不同策略的调度 会得到不同系统消耗的性能 假设由 N 个待串行用户,每个用户可以使用 A/B/C 三种不同的调度策略 不同的策略会消耗不同的系…...

Python列表系列之统计计算

Python也提供了一些内置函数去实现诸如统计、计算的功能&#xff0c;下面我们具体来看一下 基本语法 1、获取元素出现的次数 使用列表的count()方法可以获取元素在列表中出现的次数&#xff0c;语法格式如下&#xff1a; listname.count(obj) lisetname&#xff1a;列表的名…...

【蓝桥杯集训·每日一题】AcWing 1460. 我在哪?

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴二分查找哈希表一、题目 1、原题链接 1460. 我在哪&#xff1f; 2、题目描述 农夫约翰出门沿着马路散步&#xff0c;但是他现在发现自己可能迷路了&#xff01; 沿路有一…...

一个不可忽视的重要能力

阅读本文大概需要 2.16 分钟。1、自我们开工后&#xff0c;年后第一场直播&#xff0c;场观二十万出头&#xff0c;以为是不是巧合还是卡 bug 了&#xff0c;就最近又测了下&#xff0c;发现连续几场直播下来&#xff0c;场观数据依旧很吓人&#xff0c;都是十几二十万&#xf…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

HTML前端开发:JavaScript 获取元素方法详解

作为前端开发者&#xff0c;高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法&#xff0c;分为两大系列&#xff1a; 一、getElementBy... 系列 传统方法&#xff0c;直接通过 DOM 接口访问&#xff0c;返回动态集合&#xff08;元素变化会实时更新&#xff09;。…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

python打卡第47天

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 def visualize_attention_map(model, test_loader, device, class_names, num_samples3):"""可视化模型的注意力热力图&#xff0c;展示模…...