tempdb数据文件突然增大的原因

上周公司的生产库的tempdb瞬间暴涨,导致磁盘剩余空间为0,估计是相关人员运行不合理的sql查询导致。

tempdb在以下情况会用到:

(1)用户建立的临时表.如果能够避免不用,就尽量避免. 如果使用临时表储存大量的数据且频繁访问,考虑添加index以增加查询效率。
(2)Schedule jobs.如DBCC CHECKDB会占用系统较多的资源,较多的使用tempdb.最好在SQL Server loading比较轻的时候做。
(3)Cursors.游标会严重影响性能应当尽量避免使用。
(4)CTE(Common Table Expression).也会在tempdb中执行。

(5)SORT_INT_TEMPDB.建立index时会有此选项。
(6)Index online rebuild。
(7)临时工作表及中间结果集.如JOIN时产生的。
(8)排序的结果。
(9)AFTER and INSTEAD OF triggers。

因此如果有人在数据库中用笛卡尔乘积的方法查询多个表,并且排序的话,会造成tempdb的暴涨,因为大量的排序就是在tempdb中进行的。

为了监控tempdb的文件或者tempdb的log的大小,现写了以下一个存储过程:

首先建立三个表:

--保存当前tempdb的数据文件和LOG文件的大小
if exists (select * from sysobjects where id = object_id(N'[Check_tempdb_Size]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [Check_tempdb_Size]
GO
Create table Check_tempdb_Size(
ID INT IDENTITY,
FileId int,
size int,
Name varchar(10),
InsertdateTime datetime default getdate()
)

--保存当前dbcc opentran的信息
if exists (select * from sysobjects where id = object_id(N'[Check_tempdb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table Check_tempdb
go
create table Check_tempdb(
ID INT IDENTITY,
TypeName varchar(100),
TypeValue varchar(100),
InsertDate datetime default getdate()
)

--保存当前运行的相关进程的信息(数据库,登陆账号,登陆机器,运行的sql)
if exists (select * from sysobjects where id = object_id(N'[Check_tempdb_script]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table Check_tempdb_script
Create table Check_tempdb_script(
 ID INT IDENTITY(1,1),
 spid int,
 ecid int,
 [Database] varchar(20),
 nt_username nchar(256),
 [Status] varchar(20),
 [Wait] varchar(20),
 [IndividualQuery] varchar(max),
 [ParentQuery]  varchar(max),
 Program nchar(256),
 Hostname nchar(256),
 loginame nchar(256),
 nt_domain nchar(256),
 start_time datetime,
 InsertDateTime datetime default getdate()
 )

将当前tempdb的数据文件盒LOG文件的大小保存在Check_tempdb_Size表中

insert into Check_tempdb_Size
select fileid,size,name,GETDATE()
from tempdb..sysfiles

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, table
, datetime
, tempdb
, varchar
, OPENTRAN
nchar
tempdb数据库占满c盘、收缩tempdb数据库、tempdb数据库、数据库tempdb日志已满、饭量突然增大,以便于您获取更多的相关知识。

时间: 2024-09-09 09:43:25

tempdb数据文件突然增大的原因的相关文章

Oracle数据库数据文件损坏如何恢复

数据文件有时候因为某种原因会导致损坏而导致无法启动数据库,那如何恢复呢? 下面是一次模拟实验,如下 1. 首先创建一个表空间TEST,在创建一个表test在表空间test上 SQL> create tablespace test datafile '/u01/app/oracle/oradata/lhz/test01.dbf' size 10M; SQL>  create table test as  select * from dba_objects; Table created SQL&g

【MySQL】ibdata文件增大的原因

背景   早上和一个同事讨论技术问题,谈到ibdata文件会随着数据的使用而增大,而且在事务隔离级别RR 隔离级别下要比RC 隔离级别的大.本文尝试分析两个问题之一  a ibdata 文件随着数据库的使用而增大.  b RR 隔离级别下比RC 隔离级别下增长的快大.ibdata1 存放哪些数据? 表数据/索引 (innodb_file_per_table=0 时) data dictionary aka metadata of InnoDB tables undo 表空间 回滚段相关记录 do

Windows 8系统下如何手动修改Outlook 2013默认的ost数据文件位置

故障现象: 很多时候,企业的Exchange server是采用MAPI或者Exchange Server缓存模式与客户端的Outlook进行沟通的,那么默认情况下,该件件存储位置为:Documents and Settings/user name/Local Settings/Application Data/Microsoft/Outlook.随着使用时间的推移,该文件会不断的增大,占用大量的C分区磁盘空间:但是,使用Outlook2013新建Email账户的时候,其数据文件(.ost文件)

建立STANDBY数据库时在ASM上恢复主库的数据文件出现ORA-15173错误

建立STANDBY数据库时,在ASM上恢复主库的数据文件出现了ORA-15173错误. 主库和备库都是单实例数据库,不过都使用ASM作为存储方式. 在备库上利用主库的备份进行restore database操作,碰到了这个错误: [oracle@localhost data]$ rman target / Recovery Manager: Release 10.2.0.3.0 - Production on Sat Feb 12 14:43:29 2011 Copyright (c) 1982

Outlook 删除或存档邮件后,为什么数据文件仍然大小不变?

Outlook 删除或存档邮件后,为什么数据文件仍然大小不变. 原因分析: 原来,存档时依然会保留原来的文件结构,需要进行压缩才能释放这部分空间.而压缩则通常在计算机空闲且 Outlook 仍在运行时才在后台自动运行.所以您无法立竿见影看到数据文件变小. 解决方案: 您可以对数据文件进行手动压缩,立即释放空间. Outlook 2010 情况下: 打开"文件>信息",按一下"账户设置"按钮,选择"账户设置". 图一 切换到"数据文

Win8下如何手动修改Outlook 2013默认的ost数据文件位置

  很多时候,企业的Exchange server是采用MAPI或者Exchange Server缓存模式与客户端的Outlook进行沟通的,那么默认情况下,该件件存储位置为:Documents and Settingsuser nameLocal SettingsApplication DataMicrosoftOutlook.随着使用时间的推移,该文件会不断的增大,占用大量的C分区磁盘空间;但是,使用Outlook2013新建Email账户的时候,其数据文件(.ost文件)总是被保存在C盘默

ORACLE 移动数据文件 控制文件 重做日志文件

ORACLE数据库有时候需要对存储进行调整,增加分区.IO调优等等,此时需要移动数据文件.重做日志文件.控制文件等等,下文结合例子总结一下这方面的知识点. 进行数据文件.重做日志文件.控制文件的迁移前,需要总体了解一下当前Linux服务器的磁盘.分区信息,以及服务器文件使用情况,如下所示 查看Linux服务器的文件使用情况 1: [root@DB-Server ~]# df -h 2:  3: Filesystem Size Used Avail Use% Mounted on 4:  5: /

表空间 数据文件-oracle数据库表空间中的数据文件自动扩展到32G后不再自动扩展

问题描述 oracle数据库表空间中的数据文件自动扩展到32G后不再自动扩展 CSDN移动问答oracle表空间中的数据文件自动扩展到32G后不再自动扩展,报ora-01653错误,我之后手动加了个数据文件,但是不久之后这个数据文件自动扩展到了32G又报错,请问这是什么原因,难道以后只能手动添加数据文件么????

利用Python读取外部数据文件的例子

不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数据可视化.数据挖掘等.   在本期的Python学习中,我们将针对Python如何获取外部数据做一个详细的介绍,从中我们将会学习以下4个方面的数据获取:   1.读取文本文件的数据,如txt文件和csv文件   2.读取电子表格文件,如Excel文件   3.读取统计软件生成的数据文件,如SAS数据集.