实战案例--TEMPDB暴涨
来源:互联网 发布:浙江师范行知学院论坛 编辑:程序博客网 时间:2024/04/28 11:35
前言
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 或者查
用下面的语句查:
都是不准的
阅读全文
0 0
- 实战案例--TEMPDB暴涨
- TempDB暴涨问题排查
- 压力测试中JVM内存暴涨原因分析实战
- 压力测试中JVM内存暴涨原因分析实战
- seo实战案例
- 指针--实战案例
- block实战案例
- SpringMVC+Mybatis实战案例
- RDD案例实战
- LayoutAnimationController实战案例
- jquery 实战案例
- hadoop2.x_实战案例
- Redis书签案例实战
- Fragment实战案例
- matplotlib 实战案例详解
- Azkaban实战案例
- 银子暴涨
- 银子暴涨
- OGNL表达式
- 通过anaconda安装tensorflow的youtube教程——gpu版本安装前记得先安装cuda和cudnn
- HDU 1058 素数因子DP
- jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常
- java环境变量报错
- 实战案例--TEMPDB暴涨
- android:ADB、NDK常用命令
- BroadCastReceiver复习
- 实现第三方登录,并获取头像信息
- js获取屏幕可视区域宽高兼容写法
- js数组去重的三种常用方法总结
- Java之Math类使用小结
- Python面试必须要看的15个问题
- Elasticsearch之批量处理。