TempDB暴涨问题排查

原创 2017年09月08日 11:04:03

前言

tempdb日志文件暴增 ,造成磁盘空间不足,甚至影响业务运行。如何找到产生问题的元凶,加以解决避免以后再次发生。

正文

如图,tempdb log文件从7.40开始突然暴涨,因为 tempdb 0 M到 40G

tempdb 所在磁盘是C 盘

C盘的可用空间正好也为40G

在下午16.22左右的时候tempdb 文件暴涨已经影响到业务使用.临时解决是备份收缩日志。下面通过监控信息查找造成问题的原因:
查看7.40 之后这段时间 的运行语句,发下有个会话1085一直在运行

这个会话分配了内部对象(就是使用了tempdb的对象)

而言会话从7.46开始,一直持续到下午16.20 从时间上也非常吻合。所以他就是我们要找的元凶。

原因

对应普通的 简单模式的数据库无法重用日志的主要原因是没有做checkpoint,和存在没有提交的事务。但对于TEMPDB 来讲 他不需要预写日志。因为Tempdb 不支持重做(Redo)但需支持回滚(rollback).这也是tempdb日志存在的原因.
如果一个事务还没有提交,那它可以在任何时候回滚。SQL Server必须做好这种准备,以便能够从日志记录中找回修改前的数据内容,完成回滚。在SQL Server里面,所有的日志记录都有严格顺序,中间不可以有任何跳跃。所以如果某个数据库有没有提交的事务,SQL Server会标记所有从这个事务开始的日志记录(不管和这个事务有没有关系)为活动事务日志 。这些日志记录都有可能“需要”被用来做回滚。

解决

找到语句后,从之前的截图的等待信息可以看出,这个语句一直持续运行的原因是,等待ASYNC_NETWORK_IO
这说明,客户端和数据库服务器网络传输存在问题或者程序中未接收数据库传输的数据。更多的是后者。问题就提交给开发,检查代码,对程序进行优化。

补充

查看日志空间使用的方法:
DBCC LOGinfo() 查看vlf的状态
DBCC SQLPERF(LOGSPACE) 建议用,查看日志空间的使用 ,更准。

从UI 或者查


都是不准的

版权声明:本文为博主原创文章,未经博主允许不得转载。

性能调优系列文章目录

前言 之前写了很多文章都是想到什么,或者最近遇到什么实际案例就写相关的实战场景。 比如: Trim的优化 ,Sleeping会话造成的阻塞 我决定,整理一个性能调优文章列一个大纲,争取在一个月之内写...

性能调优-执行计划缓存

前言 We’ve looked at the query optimization process and the details of query execution in Microsoft ...

SQL SERVER——TempDB问题查找定位与解决

步骤1.TempDB压力诊断 等待类型诊断 TempDB的争用压力在等待篇中已经简单介绍,等待的表现为 pagelatch_类等待,等待的资源是 “2: X :X ”     tempDB...

oracle某张表size暴涨问题分析处理

问题描述:客户一系统中的一张业务表突然暴涨,由原本的40M左右,涨到现在的4G,但数据量没有多大变化,一直维持在5W左右。 oracle版本:10.2.0.4 操作系统:aix6.1 初步分析:...

解决关于aud$对象导致system表空间暴涨问题

OS VERSION : LINUX 6 ORACLE VERSION : 11.2.0.4

解决 tempdb 中磁盘空间不足的问题

原文: 点击打开链接 本主题提供了一些步骤和建议,可帮助您诊断和解决 tempdb 数据库中磁盘空间不足导致的问题。如果 tempdb 中的磁盘空间用尽,可能会导致 SQL Server 生产环境受...
  • yenange
  • yenange
  • 2016年04月14日 11:13
  • 1453

Sybase数据库中tempdb已满问题的分析方法

1. 用dbuser登陆数据库 如果当前用户是root,则执行以下命令切换到dbuser。 # su - dbuser 2. 配置分析环境 配置分析环境,需要执行以下命令: $ . ./...

--------------------TEMPDB数据库的空间问题--------------------------------------

今天不经意看见了sys.dm_db_session_space_usage这个DMV,就想想可以通过这个DMV来确定 tempdb 中的可用空间量,以及如何确定版本存储区、内部对象和用户对象使用的空间...

Sql Server tempdb原理-启动过程解析实践

Sql Server tempdb原理-启动过程解析实践 我们知道在SqlServer实例启动过程中数据库会进行还原(Redo,Undo)然后打开提供服务,但我们知道tempdb是不...

谈谈Tempdb在数据库系统中的作用

tempdb是SQL Server的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TempDB暴涨问题排查
举报原因:
原因补充:

(最多只允许输入30个字)