马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
1.发起先重起SQL Server服务或服务器(引发的标题:服务器停息,且大概丢失部门数据),故发起在晚上无人使用时举行。
2.修改tempdb的初始巨细,不要用默认巨细,比方限定tempdb的巨细,以观后效。
3.假如可以,请优化sql 语句
4.定期重起SQL Server服务 或 服务器
5. 可以做一个作业,每天主动实验紧缩
6. 为tempdb提供独立硬盘(如:256G SSD)
大多数各人以为tempdb是用于临时表的. 着实, 你根本不须要建临时表就可以很容易的使tempdb增大. 好比:
1. 任何排序查询使用的memory高出了SQL SERVER所被分配的memory, 该查询就会被逼迫在tempdb里举行.
2. 任何排序所要求的空间高出了tempdb被分配的空间
3. DBCC CHECKDB是使用tempdb的空间举行的. 当碰到较大的表是, 会"吃掉"很多tempdb的空间.
4. DBCC DBREINDEX大概其他DBCC..with 'Sort in tempdb'选项的也会占用很多tempdb的空间.
5. unions, order by / group by, cartesian joins, outer joins, cursors, temp tables, table
variables, 和 hashing等所产生的大的查询结果也很占tempdb的空间.
6. 任何没commit和roll back的事件会留在tempdb里
7. 使用ODBC DSN加上'建临时存储过程'选项的, 会在毗连其间把创建的object留在tempdb里.
下面的语句告诉你tempdb的分配空间:
de>use tempdbde>
de>gode>
de>execde> de>sp_spaceusedde>
de>gode>
下面的代码告诉你那些表占用了tempdb的很多空间 -- 这可以使你缩小查询范围: 看那些事件运行了很长时间或经常被留在tempdb里:
de>USE tempdb de>
de>GO de>
de>SELECTde> de>namede>
de> FROMde> de>tempdb..sysobjects de>
de> de>
de>SELECTde> de>OBJECT_NAME(id), rowcnt de>
de> FROMde> de>tempdb..sysindexes de>
de> WHEREde> de>OBJECT_NAME(id) LIKEde> de>'#%'de>
de> ORDERde> de>BYde> de>rowcnt DESCde>
较大的rowcount值阐明比力大的临时表占用了tempdb的空间. 固然, 由于tempdb用于内部I/O和其他排序过程, 以是大概你看不出什么来. 不外, 你还是可以缩小观察范围的.(好比, 你可以再通过查询INFORMATION__SCHEMA.ROUTINES..WHERE ROUTINE_DEFINITION LIKE '%#table_name%' 来查询哪个存储过程占用了很多tempdb空间)
别的, 你可以用profiler来看数据库文件和日记文件的auto grow变乱, 假如有, 阐明你设置的tempdb空间不敷大.
短期的调停方式:
1. shrink tempdb .
2. 用DBCC OPENTRAN看看有没有长时间运行的事件(一样寻常是由于没commit), 然后可以的话, 用KILL把该session制止.
3. 重启
恒久的方法:
tempdb这个临时数据库,它对性能的影响较大。tempdb和其他数据库一样可以增大,可以缩小。当数据文件须要增长的时间,通常不能保持剩余部门的一连性。这时文件就会产生碎片,这种碎片会造成性能降落。这种碎片属于外来性碎片。要制止在tempdb中产生外来性碎片,必须包管有充足的硬盘空间。一样寻常将tempdb的容量放到匀称使用容量。而你也应该允许tempdb主动增长,好比你有个一个超大的join操纵,它创建了一个高出tempdb容量的时间,该查询将失败。你还要设置一个公道的单位增长量。由于假如你设得太小,将会产生很多外来性碎片,反而会占用更多资源。sqlserver调优最有效的做法之一,就是把夺取资源的操纵独立出去。tempdb就是一个须要独立出去的部门而tempdb和其他体系库一样是公用的,是存取最大概频仍的库,全部处理惩罚临时表、子查询、GROUP BY、排序、DISTINCT、毗连等等。它最得当放到一个具有快速读写本事的装备上
综上所述:
1) tempdb没在单独的硬盘上,大概是硬盘空间太小.。
2) 既然经常增大,阐明商务运动须要很大的tempdb,也就阐明设置的tempdb的初始空间太小。假如颠末分析后, 没什么别的非常, 好比:没有长时间运行的事件等,那更阐明该tempdb应该设置较大的空间。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |