JuiceFS 元数据引擎三探:从实践中学习 TiKV 的 MVCC 和 GC(2024)
💡
原文中文,约11800字,阅读约需29分钟。
📝
内容提要
JuiceFS的元数据引擎支持MVCC和GC机制,MVCC通过时间戳区分版本,GC用于清理旧版本。TiKV支持被动GC和半主动GC两种方式。JuiceFS客户端可定期更新PD中的gc safepoint来触发TiKV的GC操作。建议设置较小的GC间隔并由管理员定期进行GC操作,以避免TiKV的DB size暴增和region split失败。
🎯
关键要点
- JuiceFS的元数据引擎支持MVCC和GC机制,MVCC通过时间戳区分版本,GC用于清理旧版本。
- TiKV支持被动GC和半主动GC两种方式,建议设置较小的GC间隔以避免DB size暴增和region split失败。
- MVCC(多版本并发控制)允许同时保留旧数据和新数据,通过时间戳区分版本。
- TiKV的GC功能依赖于safepoint,确保所有活跃事务的时间戳大于等于safepoint。
- TiKV的GC设计包括被动GC和半主动GC,后者依赖外围组件更新PD中的gc safepoint。
- JuiceFS客户端定期更新PD中的gc safepoint,默认设置为now-3h。
- TiKV的GC不及时可能导致DB size暴增和region split失败,需定期手动触发GC。
- 用户需了解TiKV的GC机制,增加了使用负担,建议有服务自动管理GC。
- 管理员应有能力按需或定时触发GC,以避免用户操作导致的资源问题。
➡️