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

Apache Doris存储引擎实战:从LSM-Tree到列式存储的优化技巧

Apache Doris存储引擎实战从LSM-Tree到列式存储的优化技巧当你在深夜收到告警发现Doris集群的写入延迟突然飙升到秒级当你面对业务方为什么查询变慢了的灵魂拷问却找不到明确原因——这些场景背后往往隐藏着存储引擎的深层优化空间。今天我们就撕开Doris的技术面纱看看这个融合LSM-Tree与列式存储的引擎如何在实战中发挥极致性能。1. LSM-Tree在Doris中的魔改实践传统LSM-Tree的写放大问题在分析型场景尤为致命。Doris的工程师们做了三项关键改造内存管理双缓冲机制主动式MemTable切换当活跃MemTable达到write_buffer_size的80%时后台线程就提前创建备用MemTable动态调整刷盘阈值根据历史写入速率预测下一个刷盘窗口避免集中式IO风暴# 查看当前MemTable状态 SHOW BACKENDS\G # 关键指标LastestSuccessWriteTimeMs分层压缩策略对比压缩类型触发条件资源消耗优化重点CumulativeDelta文件数≥5低合并小文件Base版本数≥10或大小超限高全局有序化Vertical Merge列统计信息显示高重叠度中列存局部性优化注意BaseCompaction建议设置在业务低峰期通过tablet_max_pending_versions控制积压量写入热点疏散方案识别热点分片SHOW PROC /statistic/tablet_scheduler动态调整分片策略ALTER TABLE orders SET ( replication_allocation tag.location.group_a:1, tag.location.group_b:2 );临时提升写入并发度set global parallel_fragment_exec_instance_num16;2. 列式存储的冷兵器对决列存不只是数据排列方式的改变Doris在存储格式层面做了深度定制编码类型选型指南BIT_SHUFFLE适合低基数列如状态字段压缩率可达10:1DICT_ENCODING对基数10000的字符串列效果显著DELTA_BINARY时序数据的最佳拍档比普通RLE节省30%空间局部排序优化术# 通过CLUSTER BY实现数据局部有序 CREATE TABLE user_events ( user_id BIGINT, event_time DATETIME ) ENGINEOLAP CLUSTER BY (user_id, date_trunc(hour, event_time));实战效果某电商用户行为表查询提速4倍存储节省22%智能索引组合拳ZoneMap自动为每1024行记录min/max值BloomFilterbloom_filter_columns user_id,order_no倒排索引inverted_index_storage_format V13. 写入性能的极限压榨某金融客户实测案例从5000TPS到12万TPS的优化之路批量写入的黄金法则单批次数据量控制在16MB-32MB之间使用Stream Load而非Insert语句curl --location-trusted -u user:passwd \ -H format: json -H strip_outer_array: true \ -T data.json http://fe_host:8030/api/db/tbl/_stream_loadWAL调优三件套disable_walfalse关键业务必须开启wal_retention_size_gb100根据磁盘容量调整wal_dir/ssd1/doris,/ssd2/doris多盘负载均衡内存控制生死线-- 关键参数配置 SET GLOBAL load_process_max_memory_limit_bytes8589934592; -- 8GB SET GLOBAL load_process_max_memory_limit_percent30;4. 存储空间的瘦身秘籍冷热分离的自动化实践定义存储策略CREATE RESOURCE remote_s3 PROPERTIES ( types3, s3_endpoint http://objects.example.com, s3_region us-east-1 ); CREATE STORAGE POLICY cold_policy PROPERTIES ( storage_resource remote_s3, cooldown_ttl 30 days );绑定到表分区ALTER TABLE logs MODIFY PARTITION p202301 SET (storage_policy cold_policy);压缩算法的选择困境算法压缩率CPU消耗适用场景LZ42.1x低实时写入ZSTD(1)3.5x中温数据ZSTD(3)4.2x高冷数据/历史归档碎片整理自动化脚本# 自动触发低效分片合并 from doris.client import DorisClient client DorisClient(fe_host127.0.0.1) def auto_compact(): tablets client.get_fragmented_tablets(threshold0.7) for tablet in tablets: client.run_compaction(tablet[tablet_id], CUMULATIVE) # 凌晨执行BaseCompaction if datetime.now().hour 2: client.run_global_compaction(BASE)5. 查询加速的存储层魔法预聚合的艺术CREATE MATERIALIZED VIEW store_sales_mv DISTRIBUTED BY HASH(store_id) REFRESH ASYNC AS SELECT store_id, date_trunc(day, sale_time) as day, SUM(amount) as daily_amount, COUNT(distinct user_id) as uv FROM sales_raw GROUP BY 1, 2;技巧对UV等精确去重场景设置enable_unique_key_merge_on_writetrue数据布局的战争分区裁剪PARTITION BY RANGE(dt)(PARTITION p2023 VALUES LESS THAN (2024-01-01))分桶策略DISTRIBUTED BY HASH(user_id) BUCKETS 32Colocation Groupcolocate_with user_profile_group缓存预热黑科技-- 主动加载热数据到Cache ADMIN SET FRONTEND CONFIG (preload_metadata true); ADMIN SET FRONTEND CONFIG (disable_storage_page_cache false); -- 查询时强制缓存 SELECT /* SET_VAR(use_page_cachetrue) */ * FROM hot_table;在给某社交平台优化feed流查询时通过调整Rowset版本合并策略将99分位延迟从1.2秒降到230毫秒。关键是把cumulative_compaction_min_deltas从5调整为3同时启用vertical_compaction。这就像在LSM-Tree的阶梯上安装了电梯——既保留了层级结构的优势又减少了数据爬楼的时间成本。

相关文章:

Apache Doris存储引擎实战:从LSM-Tree到列式存储的优化技巧

Apache Doris存储引擎实战:从LSM-Tree到列式存储的优化技巧 当你在深夜收到告警,发现Doris集群的写入延迟突然飙升到秒级;当你面对业务方"为什么查询变慢了"的灵魂拷问,却找不到明确原因——这些场景背后,往…...

物联网设备的PCBA定制化需求与解决方案!

‍物联网设备的快速发展对PCBA制造提出了新的挑战与传统消费电子相比,物联网设备通常要求更小的体积、更低的功耗和更强的无线连接能力,这对PCBA的微型化设计和集成度提出了更高要求。在元器件选择上,物联网设备大量采用微型封装和低功耗芯片…...

ai辅助开发:为openclawskills网站打造智能个性化教程推荐引擎

最近在帮朋友优化他的技能学习网站openclawskills,想给用户增加个性化推荐功能。作为一个独立开发者,借助InsCode(快马)平台的AI辅助开发能力,整个过程比想象中顺利很多。记录下这个智能推荐系统的实现思路,或许对其他想做类似功能…...

告别重复编码:用autoclaw在快马平台一键生成数据模型类提升效率

最近在开发一个Web应用时,我又遇到了那个老问题:每次新建数据表后,都要手动编写对应的模型类代码。这种重复劳动不仅耗时,还容易因为手误导致字段类型不匹配等问题。直到发现了InsCode(快马)平台的autoclaw功能,我的开…...

javaweb图书馆借阅管理系统设计与实现uv6546wm

目录同行可拿货,招校园代理 ,本人源头供货商功能分析用户管理模块图书管理模块借阅管理模块预约与通知模块统计与报表模块系统设置模块技术实现要点扩展功能(可选)项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同…...

【AI】RAG的原理

目录 前言 一、为什么会有RAG 二、RAG完整流程 阶段一:离线建库(准备知识) 阶段二:在线问答 三、RAG和微调的区别 微调(Fine-tuning) RAG 总结 前言 上一篇博客中,介绍了大模型的幻觉是…...

解锁B站直播自由:第三方推流工具深度技术解析

解锁B站直播自由:第三方推流工具深度技术解析 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码,以便可以绕开哔哩哔哩直播姬,直接在如OBS等软件中进行直播,软件同时提供定义直播分区和标题功能 项…...

C# TCP服务端开发实战:从零构建高效网口调试工具

1. 为什么需要自建TCP调试工具? 做上位机开发的朋友应该都深有体会,网口通讯调试是绕不开的日常。市面上的调试助手要么功能简陋,要么收费昂贵,最头疼的是遇到特殊需求时根本找不到合适的工具。去年我在做一个工业设备监控项目时&…...

Jetson Orin 实战:Ollama 加持下的 DeepSeek-R1 本地推理全流程

1. 为什么选择Jetson Orin运行DeepSeek-R1 最近在折腾边缘计算设备跑大语言模型,发现NVIDIA Jetson Orin系列真是个宝藏硬件。特别是Orin NX和Orin Nano这两个型号,虽然体积只有信用卡大小,但GPU算力能达到20-100 TOPS(INT8&#…...

巧用Option Bytes:解锁单片机NRST引脚的GPIO潜能

1. 为什么需要复用NRST引脚? 在开发低成本嵌入式系统时,我们经常会遇到引脚资源紧张的问题。就拿我最近做的一个智能家居传感器项目来说,选用了8引脚的PY32F002单片机,光是电源和地线就占了2个引脚,剩下的6个引脚要处理…...

C#进阶(⑦user32.dll实战:自动化UI操作)

1. 为什么需要user32.dll自动化UI操作 在日常开发中,我们经常会遇到需要批量操作Windows界面的场景。比如批量修改窗口标题、自动填写表单、模拟鼠标键盘操作等。手动操作不仅效率低下,而且容易出错。这时候,user32.dll就派上用场了。 user32…...

从硬件差异到数据兼容:速腾RS与Velodyne雷达的‘intensity‘字段深度解析

从硬件差异到数据兼容:速腾RS与Velodyne雷达的intensity字段深度解析 激光雷达作为自动驾驶和机器人感知的核心传感器,其数据格式的标准化程度直接影响算法开发的效率。速腾(RoboSense)与Velodyne作为两大主流厂商,硬件…...

避开EEGLab预处理里的那些‘坑’:滤波顺序、ICA成分误删与数据保存的正确姿势

避开EEGLab预处理里的那些‘坑’:滤波顺序、ICA成分误删与数据保存的正确姿势 脑电数据分析的可靠性往往在预处理阶段就已决定。许多研究者投入大量时间收集数据,却在预处理环节因细节疏忽导致结果失真——这不是技术问题,而是经验盲区。本文…...

共聚焦显微技术在高分子科学中的应用与实践

研究高分子材料的微观结构,传统方法面临一个永恒的困境:要看到内部,就得破坏样品;要保持样品完整,就只能观察表面。如今已跨越学科边界,成为高分子材料工业研发的重要工具。下文是光子湾共聚焦显微镜解析这…...

OpenArk:你的Windows系统深度安全分析利器

OpenArk:你的Windows系统深度安全分析利器 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk 你是否曾经面对系统异常却无从下手?是否担心恶意软件…...

智能SQL工具全攻略:从自然语言到高效数据查询的技术实践

智能SQL工具全攻略:从自然语言到高效数据查询的技术实践 【免费下载链接】sqlcoder SoTA LLM for converting natural language questions to SQL queries 项目地址: https://gitcode.com/gh_mirrors/sq/sqlcoder 在数据驱动决策的时代,智能SQL工…...

Python实战:基于余弦相似度的中文短文本相似性计算

1. 为什么需要中文短文本相似性计算? 在日常工作和生活中,我们经常会遇到需要比较两段中文文本相似度的场景。比如在客服系统中自动匹配相似问题,在内容平台上检测重复文章,或者在搜索引擎中推荐相关文档。这些场景都离不开文本相…...

DreamZero技术解析:当视频扩散模型成为机器人“物理大脑“

原文摘要翻译最先进的视觉-语言-动作(VLA)模型在语义泛化方面表现出色,但在新环境中难以泛化到未见过的物理动作。我们提出了 DreamZero,一种基于预训练视频扩散主干网络构建的世界动作模型(WAM)。与 VLA 不…...

Android ImageButton进阶实战:从基础到自定义状态与交互优化

1. ImageButton基础与核心属性解析 第一次接触ImageButton时,很多人会疑惑它和普通Button有什么区别。简单来说,Button是文字按钮,而ImageButton是用图片作为视觉元素的交互控件。在实际项目中,我发现90%的图标点击场景都应该使用…...

炉石传说脚本终极指南:3小时变8分钟的智能游戏体验

炉石传说脚本终极指南:3小时变8分钟的智能游戏体验 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 还在为炉石传说每日任务耗费大量时间而烦…...

用Python+NumPy手把手实现四足机器人腿部三维运动学(附完整代码与避坑点)

用PythonNumPy手把手实现四足机器人腿部三维运动学(附完整代码与避坑点) 四足机器人的运动控制一直是机器人学中最具挑战性的领域之一。想象一下,当你看到一只机械狗灵活地穿越复杂地形时,背后其实是数百行精密的运动学代码在实时…...

阿里通义Z-Image-GGUF功能体验:中英文提示词支持实测

阿里通义Z-Image-GGUF功能体验&#xff1a;中英文提示词支持实测 1. 快速开始 1.1 30秒快速上手 如果你已经迫不及待想体验这个强大的文生图模型&#xff0c;跟着这几步操作&#xff1a; # 1. 访问WebUI界面 浏览器打开: http://<服务器IP>:7860# 2. 加载Z-Image工作…...

intv_ai_mk11效果惊艳:技术概念解释附带类比(如‘注意力机制像老师点名’)提升理解

intv_ai_mk11效果惊艳&#xff1a;技术概念解释附带类比提升理解 1. 什么是intv_ai_mk11 intv_ai_mk11是一款基于Llama架构的AI对话助手&#xff0c;拥有7B参数规模&#xff0c;运行在GPU服务器上。它就像一位24小时在线的智能助手&#xff0c;能够理解并回答各种问题&#x…...

C语言联合体(共用体)的妙用:从判断大小端到节省内存的嵌入式开发技巧

C语言联合体的高阶应用&#xff1a;嵌入式开发中的内存优化与安全实践 在资源受限的嵌入式系统中&#xff0c;每一字节的内存都弥足珍贵。联合体&#xff08;Union&#xff09;作为C语言中一种独特的数据结构&#xff0c;通过共享内存空间的特性&#xff0c;为开发者提供了灵活…...

RLC串联谐振电路实验:从理论到实践的深度解析

1. RLC串联谐振电路的核心概念 第一次接触RLC串联谐振电路时&#xff0c;我被那些专业术语搞得晕头转向。后来在实际调试收音机电路时才发现&#xff0c;原来谐振现象就在我们身边。简单来说&#xff0c;RLC电路就是由电阻&#xff08;R&#xff09;、电感&#xff08;L&#x…...

谷歌Gemini API新层级:机遇与挑战并存

谷歌为Gemini API添加Flex和Priority层级&#xff0c;可根据工作负载分配任务。同时发布Gemma 4。新层级虽简化开发工作&#xff0c;但也引发受监管行业担忧&#xff0c;对企业AI战略有重要意义。新层级助力开发者谷歌为Gemini API新增Flex Inference和Priority Inference层级&…...

DolphinScheduler任务状态异常排查:从僵尸任务到数据库修复全流程

DolphinScheduler任务状态异常排查&#xff1a;从僵尸任务到数据库修复全流程 引言 在分布式任务调度系统中&#xff0c;任务状态异常是运维人员经常遇到的棘手问题。DolphinScheduler作为一款开源的分布式可视化工作流任务调度系统&#xff0c;其强大的功能背后也隐藏着一些状…...

终极指南:3分钟掌握Silk v3音频转换,彻底解决微信QQ语音播放难题

终极指南&#xff1a;3分钟掌握Silk v3音频转换&#xff0c;彻底解决微信QQ语音播放难题 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch con…...

多用途气动机器人结构设计(论文+DWG图纸+任务书+翻译+调研报告+实践小结)

多用途气动机器人结构设计聚焦于通过气动驱动系统实现机械结构的灵活操作&#xff0c;其核心作用在于整合气动元件与机械模块&#xff0c;构建具备多场景适应能力的执行平台。该设计以压缩空气为动力源&#xff0c;通过气缸、电磁阀及管路系统的协同控制&#xff0c;驱动末端执…...

LangChain4j实战避坑:用OpenAI EmbeddingModel做智能字段映射,我踩过的三个坑和解决方案

LangChain4j实战避坑指南&#xff1a;OpenAI EmbeddingModel在智能字段映射中的三大陷阱与突围策略 金融科技领域的数据接口对接&#xff0c;往往伴随着海量字段映射的繁琐配置。当合作方使用"证件号码"、"身份证号"、"ID Card"等不同表述指向同…...