自升级以来,本地 AzureDevops Server 2019 在 dbo.tbl_content 中保留了 10 倍的构建数据
Since upgrade, on-prem AzureDevops Server 2019 is retaining 10x build data in dbo.tbl_content
我的本地 Azure DevOps 2019 备份显示 .mdf 文件的大小增长不可持续
- query1 显示它是“dbo.tbl_content”table
- query2 显示它是 112GB 的“FileContainer”。
- query3 显示它的 pipelines://b 为 93GB。
- query4 显示使用的大小已从每月 1GB 增加到不可持续的每月 10GB
月。这发生在 2020 年 1 月,当时可能ci我们从 TFS18 升级到 AzureDevOps19。
所以,我想我正在寻找需要清理的构建管道(不是释放管道)?从历史上看,我们曾尝试保留 366 天的旧构建日志,但按照我们目前的速度,我们无法做到。
我们有大约 40 个构建管道(一些历史悠久,不再 运行),inc 4 在提交时触发(CI)。
回复:保留政策...
- 典型CI 构建保留策略。保留天数:10 保留分钟:1
- 典型的 RC 构建保留策略。保留天数:180 保留分钟:50
- 来自:DefaultCollection/Base/_settings/buildqueue...
最长保留政策/保留天数:183 最少保留:55
默认保留策略/保留天数:15 保留分钟数:1
永久销毁构建/删除后保留构建记录的天数:366 <- 我昨天从 7000
减少了这个
在此了解ci任何帮助,但具体ci具体而言:
如何找到导致问题的 specific 版本?我该如何解决?
是否有任何工具可以告诉我问题出在哪里。例如TFS以前有一个健康审计工具,但是我看不到?
查询1
SELECT 前 10 名 o.name,
SUM(reserved_page_count) * 8.0 / 1024 SizeInMB,
求和(案例
当 p.index_id <= 1 那么 p.row_count
其他 0
结束)Row_Count
来自 sys.dm_db_partition_stats p
加入 sys.objects o
ON p.object_id = o.object_id
分组依据 o.name
按总和排序(reserved_page_count) DESC
查询2
SELECT 所有者 =
案件
当 OwnerId = 0 时 'Generic'
当 OwnerId = 1 时 'VersionControl'
当 OwnerId = 2 时 'WorkItemTracking'
当 OwnerId = 3 时 'TeamBuild'
当 OwnerId = 4 时 'TeamTest'
当 OwnerId = 5 时 'Servicing'
当 OwnerId = 6 时 'UnitTest'
当 OwnerId = 7 时 'WebAccess'
当 OwnerId = 8 时 'ProcessTemplate'
当 OwnerId = 9 时 'StrongBox'
当 OwnerId = 10 时 'FileContainer'
当 OwnerId = 11 时 'CodeSense'
当 OwnerId = 12 时 'Profile'
当 OwnerId = 13 时 'Aad'
当 OwnerId = 14 时 'Gallery'
当 OwnerId = 15 时 'BlobStore'
当 OwnerId = 255 THEN 'PendingDeletion'
结尾,
SUM(CompressedLength) / 1024.0 / 1024.0 AS BlobSizeInMB
来自 tbl_FileReference 作为 r
加入 tbl_FileMetadata 作为 m
ON r.ResourceId = m.ResourceId
和 r.PartitionId = m.PartitionId
其中 r.PartitionId = 1
按 OwnerId 分组
按 2 降序排序
查询3
SELECT 案例
当容器 = 'vstfs:///Buil' 然后 'Build'
当容器 = 'vstfs:///Git/' 然后 'Git'
当容器 = 'vstfs:///Dist' 然后 'DistributedTask'
当容器 = 'vstfs:///Rele' 然后 'Release'
其他容器
结束为 FileContainerOwner,
SUM(fm.CompressedLength) / 1024 / 1024 AS TotalSizeInMB
FROM (SELECT DISTINCT LEFT(c.ArtifactUri, 13) 作为容器,
fr.ResourceId,
ci.PartitionId
FROM tbl_Container c with (nolock)
内部联接 tbl_Container项目 ci
ON c.ContainerId = ci.ContainerId
和 c.PartitionId = ci.PartitionId
内连接 tbl_FileReference fr
ON ci.fileId = fr.fileId
和 ci.DataspaceId = fr.DataspaceId
AND ci.PartitionId = fr.PartitionId) c
内连接 tbl_FileMetadata 调频
在 fm.ResourceId = c.ResourceId
AND fm.PartitionId = c.PartitionId
分组 c.Container
按 TotalSizeInMB 降序排序
查询4
Select DATEPART(yyyy, CreationDate) as [year],
DATEPART(mm, CreationDate) as [月],
SUM(DATALENGTH(Content)) / 1048576 作为 [Mb 大小]
来自 tbl_Content 与 (nolock)
按 DATEPART(yyyy, CreationDate) 分组,
日期部分(mm,创建日期)
按日期部分排序(yyyy,创建日期),
DATEPART(mm, 创建日期)
相关问题:TFS2015 tbl_Content increase
您可以尝试 运行 下面的查询来缩小日期范围:
SELECT ci.ContainerId,
c.ArtifactUri,
c.Name,
c.DateCreated,
SUM(fm.FileLength)
FROM tbl_ContainerItem ci
JOIN tbl_FileReference f
ON f.FileId = ci.FileId
JOIN tbl_FileMetadata fm
ON fm.PartitionId = 1
AND fm.ResourceId = f.ResourceId
LEFT JOIN tbl_Container c
ON c.ContainerId = ci.ContainerId
AND c.PartitionId = 1
WHERE f.PartitionId = 1
AND ci.PartitionId = 1
GROUP BY ci.ContainerId, c.ArtifactUri, c.Name, c.DateCreated
并且由于它与构建有关,请检查测试报告是否导致此问题。您可以参考此线程中的详细操作:TFS database growing too large
此外,您还可以尝试缩小 TFS/Azure DevOps 数据库中的事务日志。
- How to shrink TFS database size
我的本地 Azure DevOps 2019 备份显示 .mdf 文件的大小增长不可持续
- query1 显示它是“dbo.tbl_content”table
- query2 显示它是 112GB 的“FileContainer”。
- query3 显示它的 pipelines://b 为 93GB。
- query4 显示使用的大小已从每月 1GB 增加到不可持续的每月 10GB 月。这发生在 2020 年 1 月,当时可能ci我们从 TFS18 升级到 AzureDevOps19。
所以,我想我正在寻找需要清理的构建管道(不是释放管道)?从历史上看,我们曾尝试保留 366 天的旧构建日志,但按照我们目前的速度,我们无法做到。
我们有大约 40 个构建管道(一些历史悠久,不再 运行),inc 4 在提交时触发(CI)。
回复:保留政策...
- 典型CI 构建保留策略。保留天数:10 保留分钟:1
- 典型的 RC 构建保留策略。保留天数:180 保留分钟:50
- 来自:DefaultCollection/Base/_settings/buildqueue... 最长保留政策/保留天数:183 最少保留:55 默认保留策略/保留天数:15 保留分钟数:1 永久销毁构建/删除后保留构建记录的天数:366 <- 我昨天从 7000 减少了这个
在此了解ci任何帮助,但具体ci具体而言:
如何找到导致问题的 specific 版本?我该如何解决?
是否有任何工具可以告诉我问题出在哪里。例如TFS以前有一个健康审计工具,但是我看不到?
查询1 SELECT 前 10 名 o.name, SUM(reserved_page_count) * 8.0 / 1024 SizeInMB, 求和(案例 当 p.index_id <= 1 那么 p.row_count 其他 0 结束)Row_Count 来自 sys.dm_db_partition_stats p 加入 sys.objects o ON p.object_id = o.object_id 分组依据 o.name 按总和排序(reserved_page_count) DESC
查询2 SELECT 所有者 = 案件 当 OwnerId = 0 时 'Generic' 当 OwnerId = 1 时 'VersionControl' 当 OwnerId = 2 时 'WorkItemTracking' 当 OwnerId = 3 时 'TeamBuild' 当 OwnerId = 4 时 'TeamTest' 当 OwnerId = 5 时 'Servicing' 当 OwnerId = 6 时 'UnitTest' 当 OwnerId = 7 时 'WebAccess' 当 OwnerId = 8 时 'ProcessTemplate' 当 OwnerId = 9 时 'StrongBox' 当 OwnerId = 10 时 'FileContainer' 当 OwnerId = 11 时 'CodeSense' 当 OwnerId = 12 时 'Profile' 当 OwnerId = 13 时 'Aad' 当 OwnerId = 14 时 'Gallery' 当 OwnerId = 15 时 'BlobStore' 当 OwnerId = 255 THEN 'PendingDeletion' 结尾, SUM(CompressedLength) / 1024.0 / 1024.0 AS BlobSizeInMB 来自 tbl_FileReference 作为 r 加入 tbl_FileMetadata 作为 m ON r.ResourceId = m.ResourceId 和 r.PartitionId = m.PartitionId 其中 r.PartitionId = 1 按 OwnerId 分组 按 2 降序排序
查询3 SELECT 案例 当容器 = 'vstfs:///Buil' 然后 'Build' 当容器 = 'vstfs:///Git/' 然后 'Git' 当容器 = 'vstfs:///Dist' 然后 'DistributedTask' 当容器 = 'vstfs:///Rele' 然后 'Release' 其他容器 结束为 FileContainerOwner, SUM(fm.CompressedLength) / 1024 / 1024 AS TotalSizeInMB FROM (SELECT DISTINCT LEFT(c.ArtifactUri, 13) 作为容器, fr.ResourceId, ci.PartitionId FROM tbl_Container c with (nolock) 内部联接 tbl_Container项目 ci ON c.ContainerId = ci.ContainerId 和 c.PartitionId = ci.PartitionId 内连接 tbl_FileReference fr ON ci.fileId = fr.fileId 和 ci.DataspaceId = fr.DataspaceId AND ci.PartitionId = fr.PartitionId) c 内连接 tbl_FileMetadata 调频 在 fm.ResourceId = c.ResourceId AND fm.PartitionId = c.PartitionId 分组 c.Container 按 TotalSizeInMB 降序排序
查询4 Select DATEPART(yyyy, CreationDate) as [year], DATEPART(mm, CreationDate) as [月], SUM(DATALENGTH(Content)) / 1048576 作为 [Mb 大小] 来自 tbl_Content 与 (nolock) 按 DATEPART(yyyy, CreationDate) 分组, 日期部分(mm,创建日期) 按日期部分排序(yyyy,创建日期), DATEPART(mm, 创建日期)
相关问题:TFS2015 tbl_Content increase
您可以尝试 运行 下面的查询来缩小日期范围:
SELECT ci.ContainerId,
c.ArtifactUri,
c.Name,
c.DateCreated,
SUM(fm.FileLength)
FROM tbl_ContainerItem ci
JOIN tbl_FileReference f
ON f.FileId = ci.FileId
JOIN tbl_FileMetadata fm
ON fm.PartitionId = 1
AND fm.ResourceId = f.ResourceId
LEFT JOIN tbl_Container c
ON c.ContainerId = ci.ContainerId
AND c.PartitionId = 1
WHERE f.PartitionId = 1
AND ci.PartitionId = 1
GROUP BY ci.ContainerId, c.ArtifactUri, c.Name, c.DateCreated
并且由于它与构建有关,请检查测试报告是否导致此问题。您可以参考此线程中的详细操作:TFS database growing too large
此外,您还可以尝试缩小 TFS/Azure DevOps 数据库中的事务日志。
- How to shrink TFS database size