简介:
tempdb是SQLServer数据库的
系统,一直是SQL Server的一个重要组成部分,用于存储临时对象。你可以简单的理解为SQLServer TempDB是速记。这个
应用程序和数据库可以使用tempdb作为临时数据存储区,一个实例的所有
用户共享一个tempdb。很明显这样的设计不是很好。当多个应用程序的数据库部署在同一台
服务器,应用程序共享tempdb。如果开发商不注重对tempdb的使用,这些数据库会相互
作用,从而
影响中的应用。
特点uff1a
1、tempdb中的任何数据都不会在系统重新
启动后坚持。因为tempdb其实每次SQLServer开始重新
创建。这个特征表明tempdb不需要
恢复。
2、tempdb总是
设置为简单恢复
模式,当你想
修改它,你会犯
错误,事务日志记录已提交的事务被标记为重复使用后,每个
检查点。
3、tempdb中只能有一个
文件组,并没有更多的文件组可以增加。
4、tempdb用于存储三种
类型的对象:用户对象,内部对象,版本存储区
以上是基础知识。
如果SQL Server没有频繁访问tempdb,
tempdb数据库没有影响;相反,如果访问非常频繁,负荷会更糟。
tempdb的表现将对整个数据库的重要影响
它是
优化tempdb
性能的重要,特别是对大型数据库。
注:优化前tempdb,考虑多少tempdb在SQL Server性能的影响,评估过程中遇到的问题和可行性。
1。减少tempdb的使用
许多在SQL Server活动发生在tempdb中,所以在某些
情况下,我们可以减少过度使用许多tempdb提高SQL Server的整体性能。
有几个地方的tempdb的使用
方法如下:
(1)用户搭建的临时表。如果你能避免不必要的使用,避免它们。如果使用临时表来存储大量数据和频繁访问,则考虑添加索引以提高
查询效率。
(2)安排
工作,如DBCC CHECKDB,会占用更多的系统资源,多使用tempdb。最好是当SQL Server加载比较轻的时候。
(3)光标。光标将严重影响性能,应尽可能避免。
(4)CTE(公共表表达式)。它也将
执行在tempdb。
(5)该
选项时,可以将sort_int_tempdb。为索引设置。
(6)指数在线重建。
(7)临时工作表和中间结果集,如联接。
(8)
排序结果。
(9)触发器之后,而不是触发器。
这是不可能避免的tempdb的使用,如果有tempdb瓶颈或问题,是时候回去考虑这些问题。
2。将tempdb
空间大小
在SQL
重新启动服务器会自动创建了8MB大小在tempdb,
默认自动增加到10%。对于一个小的数据库,8mb大小是足够的。但对于一个庞大的数据库,8mb SQL服务器不能满足频繁活动的需要,它将按10%的比例增加,如1GB,需要很长的时间,这段时间将严重影响SQL Server的SQL Server tempdb性能。建议在初始大小的开始(如下图所示设置为中密度纤维板:300MB,LDF:50MB),也可以通过修改数据库的实现。在SQL Server在tempdb将重新启动时有足够的可用空间,
提高效率。
困难是找到一个合理的初始化大小。当SQL Server活动频繁和tempdb不增长,这将是一个适当的值,可以将值设置为初始大小在这个时候。当然,还会有更多的考虑因素。这是一个例子。
三.不收缩tempdb(如果不是必要的)
有时我们会
发现tempdb中占据了很大的空间,但在可用的空间相对较低,我们认为收缩数据库释放
磁盘空间。在这个时候,我们必须小心,这可能会影响性能。
4。将tempdb文件和其他
数据文件的未使用的IO
tempdb有IO要求高。最好分配给一个高IO磁盘,并将磁盘与其他数据文件分开,以提高读写效率。
Tempdb也分为多个文件,通常分为CPU的文件。多个CPU文件分成若干tempdb数据文件。多tempdb文件可以提高阅读和写作的效率和减少IO活动冲突。
常用的
脚本如下:
检查tempdb库的大小
选择a.name,金额(大小)* 8 / 1024 / 1024 GB } {
总和(大小)* 8 1024作为{ }
从master.dbo.sysdatabases内加入master.dbo.sysaltfiles B a.dbid = b.dbid
在a.name = 'tempdb
集团通过a.name
以1
后记:
tempdb是SQL Server的一个重要组成部分。今天,数据tempdb是非常大的,所以需要一些理解和总结tempdb的进一步研究。