问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Tempdb数据库文件出现大幅度增长,甚至达到3-4GB,从而导致K/3整体功能下降。

发布网友 发布时间:2022-04-09 13:32

我来回答

2个回答

懂视网 时间:2022-04-09 17:54

前言

  很多时候数据库的TempDB、日志等文件的暴增可能导致磁盘空间被占满,如果日常配置不到位,往往会导致数据库故障,业务被迫中断。

  这种文件暴增很难排查,经验不足的一些运维人员可能更是无法排查具体原因,导致问题不能彻底解决。

场景描述

  客户系统比较稳定,用了5台机器做了AlwaysOn高可用组,完全实现了读写分离。磁盘也做了规划,主库日常操作TempDB需求在20G以下,所以TempDB所在的磁盘只配置了100个G的空间。

  本案例是客户突然接到监控报警,显示TempDB磁盘空间不足,可用空间不断减小直到耗尽。

  比较戏剧的是,这个客户早上刚刚做了巡检数据库情况稳定,没有什么异常。

  那么我初步判定,这必然是一次特殊操作或应用配置出错导致的问题。

深入指标分析

  文件看问题

  TempDB暴增必然伴随着文件的增长,首先我们看一下TempDB文件的增长情况。

  技术分享

 

  可见TempDB的分配空间在14点50几分的时候开始暴增,细心的朋友会发现这是1个G到6个G的增长,这是因为客户的TempDB配置了16个数据文件:

  

  技术分享

 

  注:为什么配置这么多TempDB文件请参见:Expert 诊断优化系列------------------给TempDB 降温

什么造成了增长

  造成TempDB暴增原因很多语句使用临时表、语句排序、CheckDB等,但这些都是可以在语句中反应出来。所以下面我们分析一下语句。

  注:很多使用过SQL专家云平台或工具的朋友可能不会注意里面一些细节,其实很多细节(如上面的TempDB文件增长趋势和下面的语句分配空间)的设计都是解决一些疑难的问题。

  

  首先语句中的其中两个指标用户分配空间(MB)和内部对象分配空间(MB)指的就是对TempDB的使用消耗。

  注:用户分配空间可能是临时表使用的比较多,内部对象分配空间可能是排序或者hash join等操作(其他使用的消耗可以参见前面给出的链接文章)

  技术分享

  分配空间越大,也就说明语句越消耗TempDB资源。

  我们有两种方式找到到底是什么操作导致的TempDB暴增,可以直接找时间点的语句,也可以在TempDB资源消耗的高到低顺序中找!

  为了全面了解一下TempDB的问题,这里我们采用第二种方式。

  那么我们就分析一下语句对TempDB资源被消耗的情况:

  步骤1:首先我们按照用户对象分配空间排序:技术分享

 

 经过排查,这里面用户空间分配比较高的都是CDC的作业,服务器上确实运行这几个库的CDC作业。其他的一些操作的用户分配空间都比较小,所以这不是造成问题的原因!

 

 步骤2:接着我们按照内部对象分配空间排序:

 技术分享

 

 这里发现最消耗空间的是CheckDB的操作,但时间点是对应不上的,所以这也不是问题的原因。

 继续排查:

 在消耗排位在第三的这个语句中我们发现了等待资源FGCB_ADD_REMOVE(这个可以简单理解为有大量的文件自动生长发生,这里是16个TempDB文件),并且使用的内部对象空间也很高,并且我们还发现有多个会话同时执行这样的高消耗操作。技术分享

 

 继续深入:

 技术分享

  性能计数器的表象也与之前的种种迹象相吻合。

  技术分享

 

排查结论

  综合各项现象指标,可以分析出系统在下午14点57分左后开始执行TempDB高消耗操作,语句本身是一个近千行涉及大量表连接排序等操作的复杂存储过程,对TempDB造成暴增的问题负主要责任,而且雪上加霜的是从会话的标识可以看出,这不是一个语句只一次的执行,而是在特定的时间存在比较大的并发操作导致。

  与相关业务人员沟通,发现这是一个集团的类似报表的大消耗操作,因为对功能进行的调整,而程序人员的一次误操作而错误的指向了集群中的主库,而导致的问题。

 

--------------博客地址-----------------------------------------------------------------------------

热心网友 时间:2022-04-09 15:02

SQL Server 2000对于TempDB的处理是采用SQL Server Cache Buffer Manager来管理,而不再是象SQL Server 7.0一样可以使用TempDB In RAM的,这样,在高并发情况下,由于SQL Server的后台进程不能及时调度,造成TempDB的容量迅速增大(由初始的8MB增长到性能测试时的800MB),从而导致 Cache Hit Ration迅速下降造成对TempDB的 Pages Reads/Sec和Pages Writes/Sec狂飙造成的。 TEMPDB增长的同时也会导致内存使用的增长,由于内存以及物理空间的资源使用,从而导致系统的整体性能下降。 解决方法: 定期收缩TEMPDB数据库,可以采用下面几种方式,最好做一个定期执行计划 方法1、重启SQL SERVER服务 ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev', SIZE = 需要收缩的大小) ALTER DATABASE tempdb MODIFY FILE (NAME = 'templog', SIZE =需要收缩的大小) 方法2、 sp_spaceused @updateusage=true dbcc shrinkdatabase (tempdb, '百分比') 方法3、 dbcc shrinkfile (tempdev, '需要收缩的大小') dbcc shrinkfile (templog, '需要收缩的大小')
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
windows7没pdf打印机怎么办 windows7没pdf打印机解决方法 怎么回事我的IE浏览器图标不见了? 经典网络小说作者介绍 重庆哪个网络比较好 我重庆的 应该玩哪个区网速最快 我是重庆的,想安宽带,不知道哪家好 广州有什么私募 红土创新盐田港REIT分析 红塔红土基金是什么 红土创新是什么基金 慈善总会是公务员还是事业单位?怎么进? 怎样加入慈善组织 怎样加入公益组织 在河南信阳哪家银行办理装修贷款 利率低 方便快捷 准备贷款6到8万,期限3年,一次性偿还清本息 个人怎么加入公益组织 在网上取信阳的公积金用洛阳的无房证明可以吗 华为mate7手机如何进去和退出fastboot模式! 华为荣耀手机进入fastboot模式怎么退出 华为手机fastboot模式退出不了怎么办 每股收益多少才算低,多少才算合理,多少才算高? 投资上市公司每股收益在多少以上比较好,以及净资产收益率在多少以上算是比较好。。谢谢各位高手。。。 每股收益一般是多少?有四十多正常吗 请问说明函怎么写,由于个人疏忽把本公司名称跟章上名称不一样,签完合同别公司发现不对要求本公司 邮局邮寄个合同 合同能否邮寄签订 合同没有双方当面签订,是以邮寄方式签订的,有没有法律效益? 合同协议可以以邮寄的方式签约吗? 由于没签劳动合同,准备仲裁。寄给公司的声明函格式 小米路由器可以刷别的rom吗 合同说明怎么写? qq被诈骗多少钱才能报警 谷草/谷丙比值偏高,是什么原因?需要注意哪些方面? 谷草谷丙比值偏高是怎么回事 谷草/谷丙比参考值偏高代表什么? 谷草/谷丙比值偏高是怎么回事? 只是谷草/谷丙转氨酶比值偏高,其他正常是什么意思? 谷草谷丙比值偏高说明什么 谷草与谷丙转氨酶的比值偏高是什么原因? 验血报告单上的谷草/谷丙是是什么?偏高有什么危害? 体检报告显示谷草酶/谷丙酶比值偏高,有问题吗? 谷草谷丙比值1.9偏高吗? 谷草比谷丙偏高时什么意思?5.92 小学生三年级统一语文大课堂哪里有卖?坐标沈阳 帮帮忙,五年级-语文-统一大课堂-其他这本答案谁有? 语文大课堂 怎样激活语文课堂教学 什么是真正的语文课堂 在语文课堂中如何既能做到人文性和工具性的统一? 语文课堂教学如何构建新的课堂文化 怎样设置桌面菜单