问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谈谈Tempdb对SQL Server性能优化有何影响

发布网友 发布时间:2022-04-22 14:41

我来回答

1个回答

热心网友 时间:2022-04-08 22:52

先给大家巩固tempdb的基础知识
简介:
tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作为临时的数据存储区。一个实例的所有用户都共享一个Tempdb。很明显,这样的设计不是很好。当多个应用程序的数据库部署在同一台服务器上的时候,应用程序共享tempdb,如果开发人员不注意对Tempdb的使用就会造成这些数据库相互影响从而影响应用程序。
特性:
1、 tempdb中的任何数据在系统重新启动之后都不会持久存在。因为实际上每次SQLServer启动的时候都会重新创建tempdb。这个特性就说明tempdb不需要恢复。
2、 tempdb始终设置为“simple”的恢复模式,当你尝试修改时都会报错。也就是说已提交事务的事务日志记录在每个检查点后都标记为重用。
3、 tempdb也只能有一个filegroup,不能增加更多文件组。
4、 tempdb被用来存储三种类型的对象:用户对象,内部对象、版本存储区
接下来围绕主题展示问题分析:
1.SQL Server系统数据库介绍
SQL Server有四个重要的系统级数据库:master,model,msdb,tempdb.
master:记录SQL Server系统的所有系统级信息,包括实例范围的元数据,端点,链接服务器和系统配置设置,还记录其他数据库是否存在以及这些数据问文件的位置等等.如果master不可用,数据库将不能启动.
model:用在SQL Server 实例上创建的所有数据库的模板。因为每次启动 SQL Server 时都会创建 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。
msdb:由SQL Server 代理用来计划警报和作业。
tempdb:是连接到 SQL Server 实例的所有用户都可用的全局资源,它保存所有临时表,临时工作表,临时存储过程,临时存储大的类型,中间结果集,表变量和游标等。另外,它还用来满足所有其他临时存储要求.
2.tempdb内在运行原理
与其他SQL Server数据库不同的是,tempdb在SQL Server停掉,重启时会自动的drop,re-create. 根据model数据库会默认建立一个新的8MB(mdf file:8MB;ldf file:1MB, autogtouth设置为10%)大小recovery model为simple的tempdb数据库.
tempdb数据库建立之后,DBA可以在其他的数据库中建立数据对象,临时表,临时存储过程,表变量等会加到tempdb中.在tempdb活动很频繁时,能够自动的增长,因为是simple的recovery model,会最小化日志记录,日志也会不断的截断.
3.如何合理的优化tempdb以提高SQL Server的性能
如果SQL Server对tempdb访问不频繁,tempdb对数据库不会产生影响;相反如果访问很频繁,loading就会加重,tempdb的性能就会对整个DB产生重要的影响.优化tempdb的性能变的很重要的,尤其对于大型数据库.
注:在优化tempdb之前,请先考虑tempdb对SQL Server性能产生多大的影响,评估遇到的问题以及可行性.
  3.1最小化的使用tempdb
SQL Server中很多的活动都活发生在tempdb中,所以在某种情况可以减少多对tempdb的过度使用,以提高SQL Server的整体性能.
如下有几处用到tempdb的地方:
(1)用户建立的临时表.如果能够避免不用,就尽量避免. 如果使用临时表储存大量的数据且频繁访问,考虑添加index以增加查询效率.
(2)Schele 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的瓶颈或issue,就该返回来考虑这些问题了.
  3.2重新分配tempdb的空间大小
在SQL Server重启时会自动建立8MB大小的tempdb,自动增长默认为10%. 对于小型的数据库来说,8MB大小已经足够了.但是对于较大型的数据库来说,8MB远远不能满足SQL Server频繁活动的需要,因此会按照10%的比例增加,比如说需要1GB,则会需要较长的时间,此段时间会严重影响SQL Server的性能. 建议在SQL Server启动时设置tempdb的初始化的大小(如下图片设置为MDF:300MB,LDF:50MB),也可以通过ALTER DATABASE来实现. 这样在SQL Server在重启时tempdb就会有足够多的空间可利用,从而提高效率.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样抠取J-net上面KAT-TUN的视频?例如:http://www.johnnys-net.jp/j... 网页视频用什么软件可以连声音一起抠下来?急! 镶嵌在网页里的视频怎么抠出下载,http://edu.canmay.net/app/course/v... ...纪检委来公司查是不是党员,想知道会怎么样? 求一部小时候的动画片,我是90后,好像是主人公黑白的,是狗啊还是啥 一本和点拨哪个好 然气热水器用一个开关可以调节水温吗 ...他们真的好像啊。。。有没有报道他们相象的传闻? 极道鲜师 Ⅰ和Ⅱ的演员名单 ...人没有结果?还有小栗旬演的谁啊?那个黑崎是谁演的? SQL SERVER tempdb 问题 如何清除sqlserver tempdb数据 如何对SQL Server中的tempdb“减肥”求解答 tempdb对SQL Server数据库性能有何影响 sql server2008查询出来的结果不能修改,更新 SQLERVER的tempdb库突然暴增(已经暴增了),怎么排查暴增的原因? templog.ldf和tempdb.mdf这两个文件过大怎么解决 如何在tempdb出错的情况下修复数据库服务器 如何更改SQL Server 2005数据库中tempdb的位置 如何恢复tempdb数据库 sqlserver中后缀为.mdf的文件是干什么用的(sqlserver数据库mdf文件在哪) 如何收缩 SQL Server 中的 Tempdb 数据库 怎样检验漂白核桃 如何去除核桃油脂 文玩核桃的黄斑可以去掉吗 如何清洗核桃 手上核桃水如何去除 用什么化学原料可以除去核桃皮 怎样去除核桃污渍 去核桃皮用什么药水 MSSQLSERVER错误 锛的读音 SQL安装会产生多少个数据库 有多少系统数据库 sql servers数据库文件放在哪里? sqlserver2012 能分离tempdb日志文件吗 请问只有master.mdf,没有备份文件的情况下,怎么恢复master数据库,sql server 2008 r2. User Instance=true 是什么? 小额贷款app哪个好用? 腾讯健康系统是按照生日来解除吗? 王怎么读音 腾讯健康系统是按照身份证上的日期在十八岁解除吗? 为什么我的QQ一直显示手机在线 王者荣耀健康系统到了18岁会自动解除吗 靠谱快速的小额贷款app有哪些 腾讯健康系统今天成年就可以解除吗 小额贷款app,支持多期还款的 find sth+do还是doing,是find+sth不是sb 王者荣耀健康系统后16岁能玩几个小时 find sth to do还是doing,正确的搭配哪个? find+sth+adj什么中文意思