我们为何以及如何为扩展性重新设计Git对象数据库维护

我们为何以及如何为扩展性重新设计Git对象数据库维护

💡 原文英文,约2500词,阅读约需9分钟。
📝

内容提要

GitLab的Gitaly改进了维护策略,使用新机制提高效率并减少对整个存储库性能的影响。新策略已显著减少了重打包时间,并改善了大型monorepo的维护。

🎯

关键要点

  • Gitaly改进了GitLab的存储库维护策略,提高了效率并减少了性能影响。
  • 定期维护确保用户快速访问存储库并减少服务器资源使用。
  • 维护大型monorepo的成本较高,Gitaly采用新机制来优化维护。
  • 对象数据库中,用户的更改以新对象的形式写入,通常以松散对象存储。
  • 松散对象会随着时间的推移积累,Git会定期将其压缩为包文件以提高效率。
  • Gitaly使用自己的维护策略来管理Git存储库,特别是对象数据库的维护。
  • 旧的对象打包策略依赖于启发式方法,存在效率低下的问题。
  • 新的打包策略包括几何重打包和垃圾包,解决了旧策略的痛点。
  • 垃圾包允许以压缩格式存储待删除对象,减少了对性能的影响。
  • 几何重打包策略合并多个包文件,避免了全量重打包的高开销。
  • 新策略实施后,GitLab的重打包时间减少了近20%,大型存储库的维护时间减少了80%。
  • 用户可以通过设置特性标志手动启用几何重打包。
➡️

继续阅读