首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >的数据块数据表每天都在增长

的数据块数据表每天都在增长
EN

Database Administration用户
提问于 2018-02-12 07:04:51
回答 1查看 2.5K关注 0票数 0

在Server 2005中,reportservertempdb块数据表在gbs中增长过快。想知道为什么吗?我们每天都在截断它,但它还是长得太多了。数据库处于简单模式。需要澄清为什么它会增长这么多。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-02-12 07:41:59

最重要的是,面对同样的问题:报表服务器tempdb增长非常快,最好安排一个清除块表的作业(如果需要可以添加所需的表),并确保预定的时间在服务器上负载很轻(让我们每8或12小时开始一次)。

请尝试使用下面的查询来调度作业:

代码语言:javascript
复制
DECLARE @RowCount INT
SET @RowCount = ( SELECT    COUNT(1)
                  FROM      Segment WITH ( NOLOCK )
                )

WHILE ( @RowCount > 0 ) 
    BEGIN
        DELETE TOP ( 1000 )
        FROM    Segment
        SET @RowCount = ( SELECT    COUNT(1)
                          FROM      Segment WITH ( NOLOCK )
                        )
        PRINT @RowCount
    END

然后截断表和收缩文件(数据和日志文件)

代码语言:javascript
复制
TRUNCATE TABLE Table_name

-将截断表、数据和日志文件缩小到指定的目标大小(1MB)。

代码语言:javascript
复制
DBCC SHRINKFILE (TempDB', 1)
GO

DBCC SHRINKFILE (TempDB_log', 1)
GO

编辑:

表的显著增长可能由于以下原因而发生:

  • 检查报表执行情况
  • 报表快照太大,无法处理报表服务。

由于这个问题,随着时间的推移,它留下了许多孤立的快照,从而导致了数据库的增长。

可以使用以下查询获取对ReportServerTempDB贡献最大的报告:

代码语言:javascript
复制
--Reports that are largest contributors to ReportServerTempDB size through tables Segment, ChunkSegmentMapping, SegmentedChunk and SessionData:
SELECT 
   sd.ReportPath,
   COUNT(s.SegmentId) as CountOfSegmentId
FROM 
   [ReportServerTempDB].dbo.Segment s 
INNER JOIN 
   [ReportServerTempDB].dbo.ChunkSegmentMapping m 
ON 
   m.SegmentId = s.SegmentId
INNER JOIN 
   [ReportServerTempDB].dbo.SegmentedChunk c 
ON 
   c.ChunkId = m.ChunkId
INNER JOIN 
   [ReportServerTempDB].dbo.SessionData sd 
ON 
   sd.SnapshotDataID = c.SnapshotDataId 
GROUP BY   
   sd.ReportPath
ORDER BY 
   CountOfSegmentId DESC;

注意:

确保temp DB是简单的恢复模型。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/197648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档