Couchbase全驱逐模式下删除文档重建后版本号未重置问题咨询
关于Couchbase 7.0.3全驱逐模式下文档版本号(rev)未重置的原因说明
核心理解误区:全驱逐≠主动删除文档
全驱逐是Bucket在内存不足时触发的自动内存回收机制,官方描述的“删除包括元数据在内的所有内容”,仅针对文档的内存副本——即把文档的内存数据(含元数据)完全清理出内存以释放空间,但磁盘上的元数据(如文档版本记录、墓碑条目)并不会被删除。你测试中的主动删除文档操作,不属于全驱逐的触发场景。版本号(
rev)的递增逻辑
Couchbase的rev是绑定文档ID的全局逻辑时钟,所有针对该ID的操作(创建、更新、删除)都会让这个时钟单向递增:- 创建文档:
rev为1-xxx - 更新文档:
rev递增为2-xxx - 删除文档:系统会生成墓碑条目标记删除,此时
rev已递增为3-xxx(你未观测到这个值是因为删除操作返回的是删除成功,不会直接展示该版本) - 重建文档:基于该ID的历史版本号继续递增,得到
4-xxx
这种设计是为了在分布式集群中保证冲突解决的一致性,避免因版本号重置导致的数据冲突。
- 创建文档:
全驱逐模式下的实际行为
即使文档因内存压力被全驱逐,磁盘上的元数据(包括版本历史、墓碑)依然会保留。当你后续重建该ID的文档时,系统会读取磁盘上的历史版本信息,继续递增版本号,而非从头开始。
内容的提问来源于stack exchange,提问作者sarah
相关产品推荐
相关产品推荐

