TFS数据库失控

[原文发表地址] TFS Databases growing out of control

[原文发表时间] 2011-10-31 05:25

几个月前,我开始听到客户们反应TFS数据库失控了。每隔一段时间我就会听到谁谁谁的数据库在一周内增长了100GB,或者类似的消息。之前这样的状况发生是因为有人登入了太多数据——这是几年前了,那时候也有这样的反映,不过调查结果显示是因为有人在一次会议之后插入了75GB的幻灯片。

这次事情好像没那么简单了。在调查之后,我们发现这个问题和TFS测试功能有关。TFS和微软测试专家会搜集大量数据以支持你对测试失败案例做深度分析。不过,似乎这并没有多大的用处,而且我们没有安排任何环节来清理它们。

当有人告诉我在自己的服务器中,测试附加数据比其他TFS数据库中的数据大了很多,然后我开始意识到这个问题的严重性。如果你几年来一直关注我的博客,那么你就会知道我们的服务器相当大,版本控制数据主导其他所有的东西。当我发现测试数据已经超过版本控制数据时,我知道这个问题必须得到快速的解决。

第一步,我们就要发布一个叫做“测试附加清理器”(Test Attachment
Cleaner)。这个工具能让你定义“保留政策”,然后自动清理陈旧的测试附加数据。这有很大的作用。下面我参考Anutthara的博文,其中有所有我谈及的工具/更新,包括测试附加清洁器。不幸的是,有一两个我们早期的客户数据库中有大量测试数据,在使用了测试附加清洁器之后,发现在SQL服务器中有一个错误,会导致删除不需要删除的记录——而且空间也没有恢复。我们和那些客户及SQL团队合作,诊断这个问题,在修复之后再发布。你也可以在Anutthara的博客中看到这个。

虽然测试附加清洁器是一个很好的开端,但是仅仅提供去除旧数据是远远不够的。显然我们给TFS加进了太多的数据,但并非所有的数据都很有用或有效。因此下一步我们就要更新一个QFE发布,避免更新的库类与执行测试之间的关联。我们在实践中发现,很少有人需要这个功能。看看TFS内部数据库,这样能节省平均48%的测试附加数据。这可是将近一半的不会加载的数据。

我们还在研究减少测试数据占用的磁盘空间的方法,通过减少加载,高效储存或者移除未用的数据等方式来实现。

你可以阅读Anutthara的博客了解更多的内容,还有许多工具和更新的链接:https://blogs.msdn.com/b/anutthara/archive/2011/10/30/gsjgd.aspx

Brian