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 Server在tempdb数据库中存储内部对象,如一个查询的中间结果。tempdb数据库中大部分内部运作不生成日志记录,因为不需要回滚。因此,这些操作速度更快。
tempdb数据库不允许自动收缩。数据库的文件收缩和收缩的能力是有限的。这是因为许多SQL Server存储在tempdb中隐藏的对象,不能通过收缩操作移动。
|