代码之家  ›  专栏  ›  技术社区  ›  Robaticus

确定tfs中delta的大小

  •  0
  • Robaticus  · 技术社区  · 14 年前

    我们的TfsVersionControl数据库在过去的几年中有了显著的增长,并且接近80GB。不幸的是,我们所处的环境中,数据存储的每一个gig都是以很高的速率进行内部充电的,因此有很多工作都集中在将存储增长保持在最低水平上。

    我相信大部分的增长都是因为我们选择将二进制文件存储在我们的存储库中。这是我们将在中期内补救的事情。

    在短期内,有一些地方我们不需要保存二进制文件的历史。特别是在我们的主线分支和开发分支中,所以我们正在研究对这些二进制文件进行tf销毁,并在即将发布的版本中重新创建它们。

    我想知道的是:是否有任何方法可以对TfsVersionControl数据库运行查询,以了解哪些文件存储的增量超过了给定的大小?

    理想情况下,我想知道的是给定路径(项目规范)、每个文件、基本大小和增量的总大小。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jason Williams    14 年前

    我想 this page 可能是你想要的。

        2
  •  0
  •   Robaticus    14 年前

    就像问别人经常会让你找到自己的答案一样,我做了一些额外的挖掘,并得出了以下结论:

    select ver.VersionFrom, ver.Command, ver.ChildItem, tf.*, ct.CreationDate, ct.OffsetFrom, ct.OffsetTo, DataLength(ct.Content) as Size
    from tbl_version ver with (nolock)
    inner join tbl_file tf with (nolock) on tf.FileId = ver.FileId
    inner join tbl_content ct with (nolock) on ct.FileId = tf.fileid 
    where parentpath = '$\ProjectName\Branch\Folder\'
    ORDER BY ver.ChildItem, Ver.VersionFrom
    
    --where fullpath = '$\ProjectName\Branch\Folder\FileName.cs\'
    

    写入的查询将遍历特定路径中的所有文件,并在每次签入时检索一条记录。“计算大小”字段将以字节为单位显示增量的大小。我不确定这是压缩尺寸还是“实际”尺寸。

    注释过的“where”语句将为单个文件显示相同的内容。

    请注意,典型的正斜杠(“/”)以反斜杠(“\”)的形式存储在数据库中,并且结尾总是有一个尾随的反斜杠。

    如果将这些数据拉入Excel,可以快速在其上创建数据透视表以计算大小(也可以手动添加)。

    推荐文章