Decreasing Gitlab repo backup times from 48 hours to 41 minutes
a year ago
- #Performance
- #Backup
- #Git
- 代码仓库备份对灾难恢复至关重要,但随着仓库规模增长会变得极具挑战性
- 由于一个存在15年之久的O(N²)复杂度Git函数,GitLab的Rails仓库备份曾耗时48小时
- 通过算法优化修复该问题后,备份时间呈指数级下降
- 大型仓库备份面临三大挑战:耗时过长、资源密集度高、失败风险增加
- 根本原因是Git中`object_array_remove_duplicates()`函数扩展性差
- 解决方案是用哈希映射替代嵌套循环,基准测试显示性能提升6倍
- GitLab最大仓库的备份时间从48小时骤降至41分钟
- 改进带来三重效益:重塑备份策略、增强业务连续性、降低运维成本
- 该修复方案已贡献至上游Git项目,惠及更广泛的开发者社区
- GitLab 18.0版本默认集成这些优化,无需额外配置