Office中国论坛/Access中国论坛

标题: SQL Server tempdb 初始大小对数据库运行性能的影响 [打印本页]

作者: zhuyiwen    时间: 2017-8-21 15:23
标题: SQL Server tempdb 初始大小对数据库运行性能的影响
SQL Server 版本:2008 R2.

tempdb 在 SQL Server 实例安装时,其初始大小为 8MB,增长设置为 10%。那么也就是说,当其大小超过 8MB 时会自动增长为 8.8MB 以满足 tempdb 的需求。

那么,有没有必要更改 tempdb 的初始大小?tempdb 的大小对整个 SQL Server 实例运行有无很大的影响呢?


答案是

最近,监视某医院的 SQL Server 数据库的运行,发现 tempdb.mdf 文件的实时大小达到了 513MB。通过跟踪发现一个奇怪的现象,SELECT GETDATE()、SET NO_BROWSETABLE ON 语句的执行时间(Duration)偶尔达到 2000 以上,正常的话应该是 0。遍查度娘,未找到一个解释,非常郁闷。

[attach]61898[/attach]



于是,更改 tempdb 的初始大小为 1000MB,其后一周之内的跟踪,再没有发现上述奇怪的现象。

现象解析

......

SQL语句
  1. USE master
  2. GO

  3. ALTER DATABASE tempdb
  4. MODIFY FILE
  5.    (NAME = tempdev, SIZE = 1000MB)
  6. GO
复制代码

作者: tmtony    时间: 2017-8-21 15:28
期待更新!
作者: zhuyiwen    时间: 2017-8-22 13:38
tempdb系统数据库和用户数据库非常相似。主要的区别是,SQL服务器关闭后,tempdb中的数据不会持久保持。

每一次SQL Server重新启动时,tempdb会从model数据库复制。它从model数据库中继承了某些数据库配置选项,如ALLOW_SNAPSHOT_ISOLATION

tempdb中只有一个数据文件组和一个日志文件组。您可以配置文件的大小。当启用自动增长(这是默认的),文件将增长到磁盘卷已满为止。当服务器重启时,tempdb文件大小会重置为配置的大小(默认为8 MB)。自动增长是tempdb数据库临时(不同于其他类型的数据库)空间。SQL服务器重新启动时,重置tempdb数据库。

用户可以明确的在tempdb数据库中创建和使用数据表。事务可以用于修改表中的数据,事务可以回滚。然而,没有必要重做它们,因为tempdb的内容不会在重新启动SQL Server中保持。由于事务日志不需要刷新,事务提交的速度比用户数据库更快。在用户数据库,事务具有ACID属性,即原子性、并发性、隔离和持久性。而在tempdb数据库中,事务将失去持久性属性。

SQL Servertempdb数据库中存储内部对象,如一个查询的中间结果。tempdb数据库中大部分内部运作不生成日志记录,因为不需要回滚。因此,这些操作速度更快。

tempdb数据库不允许自动收缩。数据库的文件收缩和收缩的能力是有限的。这是因为许多SQL Server存储在tempdb中隐藏的对象,不能通过收缩操作移动。


作者: zhuyiwen    时间: 2017-8-22 13:49
tempdb 数据库的空间使用
以下类型的对象可以占用tempdb数据库的空间:

内部对象:







欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3