tempdb在SQLServer的性能优化有什么影响

第一,加强对tempdb的基本知识

简介:

Tempdb is the system database of SQLServer, which has always been an important part of SQLServer, used to store temporary objects.You can simply understand that tempdb is a shorthand for SQLServer.Both the application and the database can use tempdb as a temporary data storage area.All users of an instance share a Tempdb.It is obvious that the design is not very good.When multiple application databases are deployed on the same server, applications share tempdb. 如果开发商不注重对tempdb的使用,这些数据库会相互作用,从而影响中的应用。

特点uff1a

1、tempdb中的任何数据都不会在系统重新启动后坚持。因为tempdb其实每次SQLServer开始重新创建。这个特征表明tempdb不需要恢复。

2、tempdb总是设置为简单恢复模式,当你想修改它,你会犯错误,事务日志记录已提交的事务被标记为重复使用后,每个检查点。

3、tempdb中只能有一个文件组,并没有更多的文件组可以增加。

4, tempdb is used to store three types of objects: user objects, internal objects, version storage areas

接下来,围绕主题分析问题:

对1.sql服务器系统数据库介绍

SQL Server有四个重要的系统级的数据库:主模型、msdb,tempdb。

所有高手:SQL Server记录系统级信息系统,元数据,包括端点范围的例子,链接服务器和系统配置设置,还有记录其他数据库存在和这些数据请求文件的位置等。如果主服务器不可用,数据库将无法启动。

模型:用于在SQL Server实例上创建的所有数据库的模板。因为tempdb每次SQL Server启动创建的模型数据库,必须在SQL Server系统的存在。

Msdb:是由SQL Server代理用于计划警报和作业。

Tempdb:是一个全球性的资源,是提供给所有的用户连接到SQL Server实例。它保存所有临时表、临时工作表、临时存储过程、临时存储大类型、中间结果集、表变量和游标。此外,它还用于满足所有其他临时存储需求。

对2.tempdb内部运行原理

不像其他的SQL Server数据库tempdb,SQL服务器停止,重新启动时自动下降再创造,根据模型库将默认为一个新的8MB的建立(MDF文件:8mb;ldf文件:1MB,autogtouth恢复模式设置为10%)简单的tempdb数据库的大小。

对tempdb数据库建立后,DBA可以在其他数据库的临时表创建数据对象的临时存储,表变量可以被添加到tempdb。tempdb活动频繁,能自动增加,因为它是简单恢复模式,将最大限度地减少日志,日志将继续削减。

三.如何优化tempdb合理提高SQL Server的性能

如果SQL Server不经常访问tempdb tempdb数据库,不会影响。相反,如果访问频繁,加载将变得更加严重。tempdb的表现将对数据库的重要影响。优化tempdb的性能是非常重要的,尤其是大数据的基础。

注:优化前tempdb,考虑多少tempdb在SQL Server性能的影响,评估过程中遇到的问题和可行性。

3.1减少tempdb的使用

许多在SQL Server活tempdb中的活动,所以在某些情况下,很多情况可以减少过度使用来提高SQL服务器的整体性能。

有几个地方的tempdb的使用方法如下:

(1)用户搭建的临时表。如果你能避免不必要的使用,避免它们。如果使用临时表来存储大量数据和频繁访问,则考虑添加索引以提高查询效率。

(2)安排工作,如DBCC CHECKDB,会占用更多的系统资源,多使用tempdb。最好是当SQL Server加载比较轻的时候。

(3)游标。光标会对性能产生严重的影响,应尽量避免。

(4)CTE(公共表表达式)。它也将执行在tempdb。

(5)sort_int_tempdb。在设置索引时将具有此选项。

(6)指数在线重建。

(7)临时工作表和中间结果集,如联接。

(8)排序结果。

(9)触发器之后,而不是触发器。

这是不可能避免使用tempdb,如果有tempdb的瓶颈或问题,它返回的时间去考虑这些问题。

3.2分配tempdb空间大小

在SQL重新启动服务器会自动创建了8MB大小在tempdb,默认自动增加到10%。for a small database, 8MB size is enough. 但对于一个庞大的数据库,8mb SQL服务器不能满足频繁活动的需要,它将按10%的比例增加,如1GB,需要很长的时间,这段时间将严重影响SQL Server的SQL Server tempdb性能。建议在初始大小的开始(如下图所示设置为中密度纤维板:300MB,LDF:50MB),也可以通过修改数据库的实现。在SQL Server在tempdb将重新启动时有足够的可用空间,提高效率。


困难是找到一个合理的初始化大小。当SQL Server活动频繁和tempdb不增长,这将是一个适当的值。此时可以将值设置为初始大小。当然,还会有更多的考虑因素。这是一个例子。

3.3不收缩tempdb(如果不是必要的)

有时我们会发现tempdb中占据了很大的空间,但在可用的空间是比较低的,它会收缩数据库释放磁盘空间。在这个时候,要小心,这可能会影响性能。


图为:对879.44mb tempdb分配空间,45%的空间是免费的,如果收缩下,可以释放的磁盘的一部分,但如果在服务器运行SQL大量,tempdb空间不够,按照10%的比例自动增长。这样,收缩操作无效,也增加了系统加载。

3.4将tempdb文件和其他数据文件的未使用的IO

tempdb有IO要求高。最好分配给一个高IO磁盘,并将磁盘与其他数据文件分开,以提高读写效率。

Tempdb也分为多个文件,通常分为CPU的文件。多个CPU文件分成若干tempdb数据文件。多tempdb文件可以提高阅读和写作的效率和减少IO活动冲突。

tempdb是SQL Server的一个重要组成部分,与上述只是一个总结的一些tempdb的理解,还需要进一步的研究。