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

ETL性能优化

目录

一 概述

二 性能选项

1 程序最大内存

2 ETL性能选项

3 多任务并发选项

三 性能监测

四 性能优化


概述

BeeDI内置多种机制用于ETL性能优化,可选择同步、异步、并发、缓冲更新等不同数据载入方式或调整提交缓冲记录数优化单一ETL任务性能,也可调整任务并发数优化多任务运行性能。BeeDI提供性能监测功能,可输出ETL各项操作与内存关系变化曲线,通过性能监测,确定ETL性能瓶颈,最终实现ETL性能优化。

性能选项

1 程序最大内存

在程序启动前通过配置文件项设置,程序实际最大内存分配取决于启动时系统空闲内存。

2 ETL性能选项

同步查询

单线程阻塞方式查询数据。

异步查询

多线程并行查询数据,采用缓冲区存储查询数据。

联邦运算

ETL服务器进行SQL运算,降低数据库运算负载。

日志解析

通过日志偏移位置获取增量变化数据。

同步载入

单线程阻塞方式逐条写入数据到目标表。

异步载入

多线程缓冲区方式并行逐条写入数据到目标表。

批量载入

多线程缓冲区方式并行批量写入数据到目标表。

缓冲更新

ETL服务器缓冲目标表记录校验值,通过哈希方式确定目标表操作方式,数据不存在执行插入,数据存在但校验值不同执行修改,目标数据冗余执行删除。

缓冲记录数

控制数据载入时每次最大提交记录数,同时该值会影响异步与批量载入缓冲区大小。

3 多任务并发选项

最大并发数

同时运行作业最大数,一旦运行作业数达到该值,后续作业排队等待。

工作流并行

当运行作业达到最大数时,通过工作流并行方式同时执行多个子任务。

分时调度

当相关任务并发执行占用内存太高时,任务设置不同的启动时间错峰运行。

工作流串行

当相关任务并发执行占用内存太高时,通过工作流串行方式顺序执行任务。

互斥锁

当相关任务并发执行占用内存太高时,通过互斥锁强制任一时间最多只有其中一个任务执行。

性能监测

BeeDI内置ETL性能监测功能,支持ETL各项操作(同步查询、异步查询、联邦运算、日志解析、同步载入、异步载入、批量载入、缓冲更新)与内存关系变化曲线显示,可查看最近10日任一时刻各项操作并发数及内存使用峰值,支持按日、按小时或按分钟查看并发数及内存峰值。

性能优化

通过性能监测分析各项操作与内存使用量关系,确定性能瓶颈,采用以下方式进行ETL性能优化:

低负载

内存处于低位时任务可选择批量载入模式、增加缓冲记录数或增加任务并行度(增加最大并发数参数、工作流并行)。

高负载

内存处于高位时避免内存溢出,通过高负载时对应的时间确定相关ETL任务,对相关任务指定同步载入模式、降低缓冲记录数或降低任务并行度(降低最大并发数参数、相关任务分时调度、使用互斥锁或工作流串行、扩展程序最大内存)。

相关文章:

  • 猿创征文|【第11题】求坐上公交的最晚时间(考察贪心算法)
  • 直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(一)
  • Pandas loc与iloc
  • 基于QT的指挥猫猫打架玩耍的小游戏设计
  • K8s的Service详解
  • MyBatis-plus组件学习
  • pgsql执行脚本并传参
  • Vue组件通信(组件的自定义事件、全局事件总线、消息订阅与发布、插槽、props)(八)
  • 【编程题】【Scratch三级】2020.12 躲避恐龙
  • nodejs+vue+elementui在线公益-帮助流浪动物网站python java
  • linux C/C++ socket编程
  • 人工智能·前缀和
  • P27 含并行连结的网络 GoogLeNet / Inception V3
  • D - Index × A(Not Continuous ver.)
  • egret白鹭引擎RES资源管理模块,资源动态加载失效BUG,加载卡死BUG,完整解决方案与超详细调试漏洞过程
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【前端学习】-粗谈选择器
  • 2017届校招提前批面试回顾
  • android 一些 utils
  • canvas 高仿 Apple Watch 表盘
  • java8 Stream Pipelines 浅析
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Just for fun——迅速写完快速排序
  • Linux下的乱码问题
  • magento 货币换算
  • Markdown 语法简单说明
  • Puppeteer:浏览器控制器
  • React Native移动开发实战-3-实现页面间的数据传递
  • Shadow DOM 内部构造及如何构建独立组件
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 产品三维模型在线预览
  • 从重复到重用
  • 大数据与云计算学习:数据分析(二)
  • 多线程事务回滚
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 回流、重绘及其优化
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Linux(帮助手册)
  • (论文阅读30/100)Convolutional Pose Machines
  • (南京观海微电子)——I3C协议介绍
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四)图像的%2线性拉伸
  • (转)大型网站的系统架构
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • ... 是什么 ?... 有什么用处?
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .CSS-hover 的解释
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net Redis的秒杀Dome和异步执行