自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(254)
  • 收藏
  • 关注

原创 一文讲透分布式共识:Paxos、VSR、ZAB和Raft

本文深入探讨了Paxos、Viewstamped Replication(VSR)、ZAB和Raft四种共识算法的核心差异。虽然这些算法都基于多数派交集原则,但在工程实现上存在显著区别:Paxos追求数学完备性但实现复杂;VSR开创主备模式;ZAB依赖FIFO信道简化设计;Raft通过强约束提升可理解性。关键差异体现在日志连续性、主节点选举约束和数据流向上:这些设计取舍反映了算法在灵活性与工程可靠性之间的平衡,Raft通过限制自由度换取更易验证的正确性。

2025-12-19 00:32:11 736

原创 Word/WPS 制表位分析:如何设置公式居中和编号右对齐

制表位是文本排版中的预设坐标点,用于控制Tab键的跳转位置和对齐方式。WPS和Word会按顺序查找右侧第一个制表位,无自定义制表位时使用默认间距(通常2字符)。通过设置不同对齐方式的制表位(如左对齐、居中、右对齐),可实现类似表格的纯文本排版效果,适用于课程表、公式等场景。在WPS中,制表位可通过标尺定位,支持以字符或厘米为单位,并能通过段落设置或样式实现复用。合理使用制表位可高效完成复杂文本对齐需求。

2025-12-03 18:51:25 590

原创 深入解析Flink两阶段提交Sink机制

Apache Flink 的 TwoPhaseCommitSinkFunction 是一个已废弃的抽象基类,用于实现精确一次(exactly-once)语义的 Sink 功能。它基于两阶段提交协议,通过预提交和提交两个阶段确保数据一致性。该组件与 Flink 的检查点机制深度耦合,在检查点触发时执行预提交,在检查点完成时执行正式提交。虽然能保证精确一次处理,但其设计存在状态管理复杂、缺乏异步支持等问题。Flink 现推荐使用新一代 Sink API

2025-11-19 19:47:01 879

原创 深入解析Flink会话窗口机制

Flink会话窗口机制分析摘要:Flink会话窗口是一种动态窗口类型,根据数据活跃度自动分组,当数据间隔超过会话阈值时关闭窗口。系统提供基于事件时间和处理时间的两种实现,支持动态间隔配置。核心机制包括:1) 窗口分配器为每个元素创建初始窗口;2) 合并算法对重叠/相邻窗口进行合并;3) MergingWindowSet管理窗口状态映射,避免数据迁移开销。窗口数据实际存储在状态后端,窗口对象仅作为命名空间标识。该机制通过轻量级映射表实现高效查询,时间复杂度稳定为O(1),适合用户会话分析等场景。

2025-11-13 16:40:42 772

原创 RocksDB的MemTable实现 HashSkipListRep:前缀查询神器

HashSkipListRep是一种结合哈希表和跳表优势的数据结构,专为优化前缀查询设计。它通过SliceTransform提取key前缀,使用哈希表快速定位到对应桶(每个桶是一个小型跳表),将查询复杂度从O(logN)降为O(1)+O(logK)。该结构支持高效并发插入(无锁设计),特别适合前缀查询场景(如按用户ID查询),但全局遍历性能较差(需临时合并所有桶)。其核心在于std::atomic保证内存可见性,通过release-store/acquire-load确保线程安全,避免竞态条件。

2025-10-22 17:04:39 704

原创 深入解析Paimon的Catalog(文件系统,JDBC,FlinkCatalog和孤儿文件)

本文深入剖析了Paimon Catalog系统的实现架构。FlinkCatalog作为桥接层,通过适配器模式将Paimon的元数据管理能力暴露给Flink SQL引擎,实现了双向元数据转换、表操作代理和高级特性集成。文章详细解析了FileSystemCatalog和JdbcCatalog两种存储后端的实现差异,包括文件系统目录结构与JDBC元数据存储方案的对比。特别分析了分布式环境下的孤儿文件清理机制,以及基于ClientPool的连接池优化设计。整个系统采用模板方法模式、策略模式等设计模式

2025-10-13 19:56:16 1026

原创 揭秘Paimon如何无缝集成Flink

Paimon通过实现Flink的标准连接器接口(如CatalogFactory、DynamicTableSource/SinkFactory)无缝集成到Flink生态中。其核心机制包括:1)利用Java SPI实现自动发现,通过META-INF/services声明工厂类;2)FlinkCatalog作为适配器桥接Flink与Paimon的元数据操作;3)FlinkTableFactory创建包含Paimon特有Writer/Committer算子的Source/Sink。

2025-10-13 18:38:31 1089

原创 从Apache Doris 学习 HyperLogLog

HLL类实现了HyperLogLog算法,用于大数据集基数估算。该算法通过概率统计原理,在极小内存消耗下准确估算不同元素数量。核心设计包含四种数据状态(空/显式/稀疏/完整)以适应不同规模数据,采用14位精度提供约1%误差率。实现亮点包括:内存优化策略(小数据显式存储、中等稀疏存储、大数据完整存储)、基于MurmurHash64的哈希处理、分桶统计与前导零计算、调和平均数估算基数,以及序列化优化(自适应选择稀疏/完整格式)。通过状态转换机制和智能存储策略,在保证精度的同时显著降低内存占用,适合大规模数据统计

2025-10-10 17:01:23 910

原创 深入解析Doris ZoneMap索引机制

ZoneMap索引是Apache Doris中的轻量级索引机制,用于高效数据过滤。它通过记录每个数据区域的最小值、最大值及NULL值分布信息,实现快速查询优化。该索引采用两级架构(页面级和段级),支持多级过滤,显著提升范围查询性能。实现上包含写入流程(收集数据、更新统计、序列化存储)和读取流程(延迟加载、批量解析)。通过模板化设计支持多种数据类型,并采用内存池、批处理等优化策略,在保证低存储开销的同时实现高性能查询。ZoneMap索引是列式存储系统中索引设计的优秀实践。

2025-10-07 22:53:07 834

原创 Flink SQL 查询 核心概念与实战指南

本文介绍了Flink SQL 2.1版本的核心查询功能,主要包括以下内容: 基础查询机制:通过TableEnvironment执行SQL查询,支持表注册、内联查询和结果写入TableSink。 高级特性: 查询提示(Hints)用于优化执行计划 窗口表值函数(Windowing TVFs)支持滚动、滑动、累积和会话窗口 模型推理 )实现实时预测 时间旅行 查询历史数据 核心操作: 窗口聚合和分组聚合 连接操作 集合操作与排序 Top-N查询和去重 模式识别

2025-10-01 12:08:26 1078

原创 Flink Watermark机制解析

Flink的Watermark机制通过用户定义策略来估算事件时间进度,其核心是开发者与系统间的契约。WatermarkGenerator组件负责生成Watermark,支持单调递增和有界乱序两种主要策略。当Watermark(t)发出时,系统认为不会再有更早的事件到达,这种保证基于用户对数据特性的假设。若事件迟到超过阈值将被丢弃,但可通过allowedLateness处理。最终Watermark.MAX_WATERMARK能确保所有事件处理完毕。该机制本质上是启发式的,其可靠性取决于开发者对数据流特性的掌握

2025-09-24 22:44:50 1196 1

原创 Flink SourceOperator和WaterMark

SourceOperator实现了数据源生命周期管理、数据拉取与发射、事件处理、状态管理等关键功能。它通过SourceReader与实际数据源交互,支持异步I/O和Watermark对齐机制。在Kafka连接场景中,KafkaPartitionSplit定义了分区读取范围,包含起始/停止偏移量。Watermark流转过程始于SourceOperator,通过周期性任务生成,并在并行流中采用"取其小者"原则和对齐机制确保处理正确性。状态管理通过checkpoint机制保存Split信息,实现故障恢复

2025-09-24 20:37:56 772

原创 Kafka Rebalance机制全解析

Kafka的Rebalance机制负责在消费者组中重新分配分区所有权,确保高可用性和负载均衡。传统Eager Rebalance会导致服务暂停,而增量协作式Rebalance(KIP-429)通过分步迁移减少了中断时间。最新的服务端Rebalance协议(KIP-848)将分配逻辑移至服务端,简化了流程并提高了效率。对于Kafka Streams等有状态应用,还引入备用副本和预热副本来加速恢复。Rebalance机制经历了从 全部暂停 到 渐进优化 再到 服务端集中管理"的演进,不断提升系统的可用性和性能。

2025-09-23 20:54:29 904

原创 Netty 解码器 DelimiterBasedFrameDecoder

Netty中的DelimiterBasedFrameDecoder和LineBasedFrameDecoder是处理TCP粘包/半包问题的关键组件。DelimiterBasedFrameDecoder作为通用解决方案,支持任意字节序列作为分隔符,能同时处理多个分隔符并选择产生最短帧的分隔符,特别优化了行分隔场景(\n和\r\n)自动切换为更高效的LineBasedFrameDecoder。后者则是专门针对行分隔协议优化的解码器,能高效处理文本协议中的换行分隔,提供最大帧长保护机制。两者都支持剥离分隔符选项,

2025-09-23 19:46:59 868

原创 Flink中 Window解析

Flink窗口机制的核心在于Window抽象类及其子类实现。Window作为所有窗口类型的基类,定义了数据分桶、状态命名空间和生命周期管理等核心概念。TimeWindow表示时间区间,与事件时间处理机制深度绑定;CountWindow基于元素数量划分,通过唯一ID标识窗口;GlobalWindow采用单例模式,需配合自定义触发器使用。各窗口类型在序列化、哈希计算和触发机制上各有特点,适用于不同的流处理场景。理解这些窗口实现对于深入掌握Flink的流处理能力至关重要。

2025-09-22 22:13:16 1317 2

原创 Flink TCP Channel复用:NettyServer、NettyProtocol详解

Flink NettyServer作为服务端组件,负责初始化TCP服务器并处理自定义协议消息,支持自动选择Epoll/NIO传输模型,通过端口范围绑定提高可用性。NettyProtocol定义通信协议,通过ChannelHandler链实现数据解码、业务处理和编码流程。关键设计包括:1) 连接复用机制,单个物理连接通过InputChannelID区分多个逻辑数据流;2) 类HTTP/2的流式多路复用,但采用信用制流量控制更适配流处理场景;3) 与内存管理深度集成,优化网络缓冲区分配。

2025-09-22 19:11:23 2360 1

原创 Netty 重放解码器ReplayingDecoder揭秘:重写轻量异常机制 和 ConstantPool

Netty的ReplayingDecoder通过重放机制简化了异步解码逻辑,允许开发者像处理同步I/O一样编写代码。它使用特殊的ReplayingDecoderByteBuf在数据不足时抛出Signal错误,自动回滚读取位置并等待新数据。通过checkpoint机制和状态机优化复杂协议处理,虽然牺牲了部分性能且不支持全部ByteBuf操作,但显著提升了代码可读性和开发效率,特别适合处理固定结构的协议或对开发效率要求高于极致性能的场景。

2025-09-21 21:05:14 717

原创 Netty LengthFieldBasedFrameDecoder

LengthFieldBasedFrameDecoder是Netty中处理动态长度消息帧的解码器,继承自ByteToMessageDecoder。它通过五个关键参数(maxFrameLength、lengthFieldOffset、lengthFieldLength、lengthAdjustment和initialBytesToStrip)实现灵活的消息帧解析,能适配绝大多数基于长度字段的二进制协议。解码过程采用 长度字段值+调节值+长度字段结束偏移 的统一公式计算帧长度,并包含完善的半包处理、超长帧丢弃

2025-09-21 20:01:39 1201

原创 RocksDB:C++中的RAII锁应用解析

DMutexLockl(mutex_)是C++中利用RAII机制实现锁管理的一种方式。它通过std::lock_guard在构造函数中自动加锁,在析构函数中自动解锁,确保锁的正确释放。这种方式具有代码简洁、避免死锁和异常安全的优点,能保证在函数返回或异常发生时锁都能被自动释放,提高了代码的健壮性。

2025-09-20 23:00:18 397

原创 揭秘二进制GCD算法的高效实现(apache commons math3)

摘要:Apache Commons Math3中的gcdPositive方法实现了高效的二进制GCD算法(Stein算法),通过位运算替代除法/取模运算来提升性能。该方法首先提取公共因子2使参数变为奇数,然后通过减法循环计算GCD,最后恢复公共因子。配套的gcd(int,int)方法作为预处理层,处理边界情况后调用gcdPositive。对于long类型,采用负数统一处理策略解决Long.MIN_VALUE溢出问题,核心仍是Stein算法。这种分层设计兼顾了健壮性和性能,是数学计算优化的典范。

2025-09-20 20:36:32 616

原创 Netty ByteToMessageDecoder解码机制全解析

本文分析了Netty框架中的ByteToMessageDecoder抽象类及其子类FixedLengthFrameDecoder的工作机制。ByteToMessageDecoder作为基础解码器,负责处理网络字节流中的粘包和半包问题,通过内部累积缓冲区和循环解码机制为子类提供通用框架。子类只需实现decode方法定义消息边界,如FixedLengthFrameDecoder通过固定长度切分数据帧。这种设计采用模板方法模式,将通用处理逻辑与具体协议解码分离,大幅简化了网络协议解码器的开发。

2025-09-19 21:16:17 1045

原创 揭秘Protobuf的ByteString高效拼接:RopeByteString的平衡艺术

RopeByteString是Google Protobuf中用于高效处理大字节序列的数据结构,采用Rope技术实现。它将多个字节片段组织成二叉树结构,避免拼接时的数据拷贝。内部通过斐波那契数列定义平衡条件,并采用Balancer类进行动态平衡调整。核心特性包括:非递归的PieceIterator实现高效遍历、分层比较的equals方法、支持零拷贝子串操作。该设计通过空间换时间策略,将拼接操作复杂度优化到O(1),其他操作保持O(logN),特别适合处理大规模或频繁拼接的字节数据,同时保持不可变性和线程安全

2025-09-19 20:13:40 588

原创 揭秘Java synchronize :管程ObjectMonitor

本文深入解析了Java对象监视器ObjectMonitor的核心机制。首先介绍了ObjectMonitor的角色和来源,指出它是在锁膨胀为重量级锁时由JVM分配的。随后详细分析了ObjectMonitor的数据结构,包括_owner、_recursions、_entry_list等关键字段的作用。重点阐述了ObjectMonitor的主要工作流程:enter操作通过自旋和排队机制处理锁获取,exit操作负责锁释放和继承者唤醒,以及wait/notify的实现原理。还对比了ObjectMonitor与AQS

2025-09-18 21:13:25 979

原创 从Java ArrayList 学习泛型设计

ArrayList通过泛型设计巧妙结合Object数组实现类型安全存储。内部使用Object数组elementData存储元素,借助泛型类型擦除特性,在添加和访问时进行类型转换。add()方法直接存储泛型元素,get()通过强制转换确保类型安全。迭代器和toArray方法也利用泛型转换元素类型。sort方法通过将Object数组强制转换为泛型数组实现高效排序。这种设计既保证了类型安全,又保持了高效性能,展现了Java泛型与数组的巧妙结合。

2025-09-18 20:54:35 427

原创 Netty ChannelHandler

本文介绍了Netty中Handler体系的核心组件及其工作原理。ChannelHandlerAdapter作为基础适配器,采用适配器模式简化Handler开发,提供isSharable()方法检测Handler是否可共享。 ChannelHandlerMask通过位掩码避免无效方法调用。 ChannelInboundHandlerAdapter为入站处理器提供默认事件传播实现,结合@Skip注解优化性能。SimpleChannelInboundHandler通过泛型和模板方法实现自动类型检查与资源释放

2025-09-17 21:38:52 729

原创 Caffeine Expiry

Caffeine缓存库中的Expiry接口提供了精细的条目级过期控制,支持基于创建、更新和读取事件动态计算过期时间。其核心包含三个方法:expireAfterCreate(新建条目)、expireAfterUpdate(更新条目)和expireAfterRead(读取条目),通过静态工厂方法creating/writing/accessing简化常见策略实现。AsyncExpiry适配器处理异步缓存场景,保护未完成的CompletableFuture不被驱逐。

2025-09-17 18:36:00 1161

原创 揭秘HBase Get 单行读取核心机制

本文深入分析了HBase处理单行读取请求的核心实现。通过以下步骤完成数据读取:预处理阶段调用协处理器钩子。将Get请求转换为Scan操作。构建分层扫描器体系(RegionScanner→StoreScanner→MemStore/HFileScanner)。执行数据检索与合并。克隆Cell确保数据安全。后处理阶段调用协处理器钩子关键点包括: 通过ReadPoint保证读一致性 使用堆实现多源数据归并排序采用布隆过滤器和时间范围优化减少I/O默认只返回最新版本数据

2025-09-16 21:25:28 688

原创 Flink 三大Shuffle机制深度解析

Flink的三种核心Shuffle机制各具特点:Pipelined Shuffle通过内存直传实现毫秒级流处理延迟,但资源需求刚性;Blocking Shuffle采用分阶段磁盘存储确保批处理稳定性,但I/O开销大;Hybrid Shuffle创新性地结合两者优势,实现内存优先、磁盘备用的自适应交换。这三种机制分别针对流计算低延迟、批处理高吞吐和流批一体场景,展现了Flink架构的演进方向,从专用方案逐步发展为智能自适应的统一解决方案。

2025-09-16 19:42:42 853

原创 Flink 内部状态管理:PriorityQueueSet解析

Flink提供了多种优先级队列以满足不同场景需求。基于内存的HeapPriorityQueue采用二叉堆算法,实现O(logn)时间复杂度的添加/删除操作,支持高效定时器管理,在此基础上增加了去重功能和Key-Group分区支持,通过组合堆和哈希表实现集合语义。批处理模式下专用的BatchExecutionInternalPriorityQueueSet优化为单Key处理场景,简化了数据结构。对于持久化需求,RocksDBCaching利用RocksDB的有序存储特性,结合内存缓存实现大容量优先级队列

2025-09-15 20:15:22 938

原创 Apache Paimon 官方文档

Apache Paimon 是一种支持流批一体处理的实时湖存储格式,旨在构建现代化的实时湖仓架构。它融合了湖存储格式与 LSM 树结构,既保持了数据湖的低成本、可扩展优势,又提供了数据库般的高效更新和查询能力。核心能力包括:实时更新处理、海量数据批流处理、完整数据湖特性(如 ACID 事务、时间旅行)以及统一存储架构。Paimon 通过分层式文件结构组织数据,包括快照文件、清单文件和数据文件,支持分区和分桶机制。其设计哲学强调 SQL 作为统一管理接口,通过系统表实现深度可观测性,并支持多种表类型和索引机制

2025-09-15 19:16:33 4067

原创 Velox:数据界的超级发动机

Velox是Meta开发的高性能C++执行引擎库,旨在解决数据处理系统中普遍存在的重复开发与执行标准碎片化问题。它采用向量化计算、智能内存管理和高效算子实现,专注于单机数据计算任务的极致性能,作为标准化“数据面”引擎供Presto、Spark等上层系统复用。通过解耦控制面与数据面,Velox显著减少了工程冗余,提升了计算效率与生态一致性,并支持Apache Arrow格式及Substrait标准,代表了数据系统向模块化、可组合化发展的重要趋势。

2025-09-14 20:21:59 914

原创 Netty Future和Promise接口解析:异步编程的核心

Netty的Future接口扩展了Java原生Future,解决了阻塞获取结果和缺乏回调机制的问题,引入了非阻塞的监听器机制。Promise作为可写的Future,分离了生产者和消费者角色,支持链式调用。ChannelFuture关联特定Channel,用于异步I/O操作结果监听。ProgressiveFuture则增加了进度报告能力,通过GenericProgressiveFutureListener实现进度更新和完成通知。这些接口共同构成了Netty高性能异步编程模型的核心

2025-09-14 18:28:34 920

原创 RocketMQ存储核心:MappedFile解析

DefaultMappedFile是RocketMQ高性能存储的核心,通过内存映射文件(MMF)技术将磁盘文件操作转换为高效内存操作。它封装了MappedByteBuffer,管理三个关键位置指针(wrote/committed/flushedPosition)来跟踪数据状态,并使用AtomicIntegerFieldUpdater实现无锁并发控制。MappedFileQueue则管理一组固定大小的MappedFile文件,将它们逻辑上视为连续队列,通过CopyOnWriteArrayList实现并发安全。

2025-09-13 22:19:07 843

原创 Netty 针对 Java NIO Selector 优化:SelectedSelectionKeySet

Netty的SelectedSelectionKeySet通过数组替代JDK的HashSet优化NIO性能:1) 使用数组存储SelectionKey,将add操作降为O(1);2) 通过reset()批量清空数组,替代原生remove()操作;3) 利用反射替换Selector内部实现,避免哈希计算和GC压力。这一优化将事件处理性能提升到极致。

2025-09-13 20:30:53 998

原创 Hadoop MapOutputBuffer:Map高性能核心揭秘

MapOutputBuffer是Hadoop MapReduce框架中负责高效收集、分区和排序Mapper输出的核心组件。它采用环形内存缓冲区设计,将序列化数据与元数据分离存储,通过指针管理实现高效内存利用。当缓冲区使用超过阈值(默认80%)时,后台SpillThread线程会触发排序和磁盘溢写。其关键机制包括:仅对元数据进行排序而非实际数据、支持可选的Combiner本地聚合、多轮溢写后合并为最终有序输出文件。这种设计实现了Mapper输出处理的高吞吐和低延迟,为Reduce阶段的高效数据拉取奠定了基础。

2025-09-12 21:29:20 687

原创 淘宝RecGPT:通过LLM增强推荐

RecGPT是一种创新的推荐系统框架,通过整合大型语言模型(LLMs)实现从"学习点击"到"理解意图"的范式转变。该系统采用三阶段LLM流水线:用户兴趣挖掘LLM分析行为历史生成兴趣画像;物品标签预测LLM推断用户潜在偏好;兴趣增强检索将语义标签注入传统推荐架构。该框架已在淘宝"猜你喜欢"场景全量部署,取得点击率提升6.33%的显著效果。RecGPT通过LLM的推理能力突破传统协同过滤的表面相关性限制,实现可解释、多样化的推荐,同时设计了多阶段训练框架和Human-LLM协同评判系统确保模型质量。

2025-09-12 20:23:41 1194

原创 揭秘KafkaStreams 线程缓存:NamedCache深度解析

NamedCache是KafkaStreams中基于LRU策略的线程级缓存,采用TreeMap+双向链表结构实现高效范围查询和键值存储。它服务于单个Task的状态存储,通过写回机制批量处理脏数据。ThreadCache作为线程级缓存管理器,负责创建/销毁NamedCache实例,并协调内存管理、数据驱逐和刷新操作。二者协同工作,为KafkaStreams提供高性能的状态操作支持,尤其适用于窗口聚合和交互式查询场景。该设计通过TreeMap的有序性实现高效范围查询,同时利用LRU策略保证热点数据驻留内存。

2025-09-11 20:19:22 918

原创 字节跳动Redis变种Abase:无主多写架构如何解决高可用难题

Abase是字节跳动开发的分布式数据库系统,通过无主多写架构和混合逻辑时钟(HLC)技术,解决了传统主从架构在高可用性、数据一致性和性能方面的瓶颈。其核心创新包括:1)采用无主多写架构消除单点故障和慢节点问题,实现毫秒级故障恢复;2)通过HLC时间戳机制确保全局数据一致性;3)灵活的Quorum配置满足不同业务需求;4)高效的Anti-Entropy机制实现秒级数据同步;5)支持3AZ部署提供高可用容灾能力。该系统支撑了字节跳动百亿级QPS的业务场景,在性能、成本和可用性之间取得了良好平衡。

2025-09-11 19:43:40 1161 2

原创 KafkaStreams 计算图节点设计:ProcessorNode、SourceNode、SinkNode

ProcessorNode是KafkaStreams处理拓扑的核心构建块,负责封装和管理用户处理逻辑。作为有向无环图(DAG)中的节点,它包装用户定义的Processor或FixedKeyProcessor 管理处理器生命周期(init/close) 处理记录转发和异常处理 主要组件: 子节点列表(children)定义拓扑结构 状态存储(stateStores)支持有状态处理 内部上下文(ProcessorContext)提供框架交互能力异常处理器处理业务逻辑错误

2025-09-10 21:17:32 996

原创 揭秘Velox高性能哈希表核心优化

Velox引擎的HashTable通过多层次优化实现高性能:采用SIMD友好的128字节Bucket结构,支持16路并行比较;支持向量化批处理,实现指令级并行;自适应选择三种哈希模式(通用哈希、小整数数组、归一化键)以匹配不同场景;利用内存预取和模板元编程减少延迟;支持并行构建加速大规模Join操作。这些优化使其成为兼顾通用性与高效性的核心数据结构。

2025-09-10 20:26:37 708

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除