news 2026/7/9 16:18:33

Milvus 源码学习系列 | 第 20 章:删除、TTL、可见性与 Compaction

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Milvus 源码学习系列 | 第 20 章:删除、TTL、可见性与 Compaction

上一章我们沿着 Search 请求一路进入 QueryNode 和 C++ segcore,重点看了单个 Segment 内部如何执行过滤、向量检索和结果构造。

在第 19 章结尾,我们留下了一个更隐蔽的问题:

如果一条数据已经被删除,或者已经因为 TTL 过期, 为什么 Search / Query 不会再看到它?

直觉上,很多人会以为删除就是把文件里的一行移掉。

但在 Milvus 这样的向量数据库里,数据已经被写成 binlog、deltalog、statslog、索引文件,并且还要支持时间戳一致性、QueryNode 增量消费、Segment 加载、故障恢复和后台 Compaction。

所以删除不是一个瞬间完成的物理动作。

它更像下面这个过程:

1. 先写入一条删除记录,也就是 tombstone。 2. QueryNode 消费 tombstone,并在查询时屏蔽对应实体。 3. deltalog / L0 Segment 保存这些删除记录,供重启和加载恢复。 4. 后台 Compaction 读取 insert binlog + deltalog,把已删除或已过期的数据过滤掉。 5. DataCoord 用新的 Segment 元数据替换旧 Segment,旧文件后续被清理。

本章就围绕这条链路展开。

如果第 18 章和第 19 章回答的是:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 16:13:49

SpringMVC前后端分离跨域问题解决方案

问题因为最近在学习vue和springboot.用到了前后端分离.前端webpack打包运行的时候会启动nodejs的服务器占用8080端口,后端springboot自带tomcat启动占用1111端口(我自己设置的)...导致前端请求的ajax到后台会产生跨域问题...然后自己试了试发现有2种办法都可以解决.利用SpringM…

作者头像 李华
网站建设 2026/7/9 16:12:33

.NET数据可视化实战:如何用OxyPlot高效构建专业级图表

.NET数据可视化实战:如何用OxyPlot高效构建专业级图表 【免费下载链接】oxyplot A cross-platform plotting library for .NET 项目地址: https://gitcode.com/gh_mirrors/ox/oxyplot 在.NET开发中,数据可视化常常面临平台限制和功能单一的困境。…

作者头像 李华
网站建设 2026/7/9 16:09:44

人生建设落地的最小单位是什么?

梦想,是人生建设的一部分;事业,是人生建设的一部分;健康,是人生建设的一部分;家庭,也是人生建设的一部分。 所以,人生建设更像是在持续建造自己的人生系统。第一层:什么叫…

作者头像 李华
网站建设 2026/7/9 16:09:00

3PEAK思瑞浦 TPCMP272-SO1R SOP8 比较器

特性电源电压:2.5 V 至 5.5 V低电源电流:每通道650 μA传播延迟:10 ns内部迟滞确保清晰的开关切换失调电压:10 mV输入偏置电流:典型值30 pA输入共模范围扩展100 mV推挽输出

作者头像 李华