上周公司的生产库的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日志已满、饭量突然增大,以便于您获取更多的相关知识。