tempdb 是一个 SQL Server PDW 系统数据库,用于存储用户数据库的本地临时表。 临时表通常用于提高查询性能。 例如,可以使用临时表来模块化脚本,并重复使用计算数据。
有关系统数据库的详细信息,请参阅 系统数据库。
关键术语和概念
本地临时表
本地临时表在表名称之前使用 # 前缀,是本地用户会话创建的临时表。 每个会话只能访问其自己的会话的本地临时表中的数据。
每个会话都可以查看所有会话中本地临时表的元数据。 例如,所有会话都可以使用查询查看所有本地临时表的 SELECT * FROM tempdb.sys.tables 元数据。
全局临时表
此版本的 SQL Server PDW 不支持具有 ## 语法的 SQL Server 中支持的全局临时表。
pdwtempdb
pdwtempdb 是存储本地临时表的数据库。
PDW 不使用 SQL Server tempdb 数据库实现临时表。 相反,PDW 将它们存储在名为 pdwtempdb 的数据库中。 此数据库存在于每个计算节点上,并且通过 PDW 接口对用户不可见。 在管理控制台的存储页面,您将在名为 tempdb-sql 的 PDW 系统数据库中看到这些记录。
tempdb(临时数据库)
tempdb 是 SQL Server tempdb 数据库。 它使用最少的日志记录。 SQL Server 在计算节点上使用 tempdb 来存储执行 SQL Server作过程中所需的临时表。
SQL Server PDW 在以下情况从 tempdb 中删除表:
执行 DROP TABLE 语句。
会话已断开。 仅删除当前会话中的临时表。
设备已关闭。
控制节点发生了集群故障切换。
一般备注
除非另有明确说明,否则 SQL Server PDW 对临时表和永久表执行相同的操作。 例如,本地临时表中的数据(就像永久表一样)在计算节点之间分布或复制。
局限性与限制
SQL Server PDW tempdb 数据库的限制和限制。 不能 :
创建以 ## 开头的全局临时表。
执行 tempdb 的备份或还原。
使用 GRANT、DENY 或 REVOKE 语句修改 tempdb 的权限。
为 tempdb 数据库执行 DBCC SHRINKLOG。
对 tempdb 执行 DDL 操作。 这有几个例外。 有关详细信息,请参阅以下本地临时表的限制和限制列表。
本地临时表的局限和限制。 不能 :
重命名临时表
在临时表上创建分区、视图或非聚集索引。 ALTER INDEX 可用于为使用 1 创建的表重新生成聚集索引。
使用 GRANT、DENY 或 REVOKE 语句修改对临时表的权限。
对临时表运行数据库控制台命令。
对同一批中的两个或多个临时表使用相同的名称。 如果批处理中使用多个本地临时表,每个临时表都必须具有唯一的名称。 如果多个会话运行同一批并创建相同的本地临时表,SQL Server PDW 会在内部将数字后缀追加到本地临时表名称,以便为每个本地临时表保留唯一名称。
注释
可以在临时表上创建和更新统计信息。ALTER INDEX 可用于重新生成聚集索引。
权限
任何用户可以在 tempdb 中创建临时对象。 用户只能访问自己的对象,除非他们收到其他权限。 可以撤销 tempdb 的连接权限以防止用户使用 tempdb,但不建议这样做,因为某些例程作需要使用 tempdb。
相关任务
| 任务 | DESCRIPTION |
|---|---|
| 在 tempdb 中创建表。 | 可以使用 CREATE TABLE 和 CREATE TABLE AS SELECT 语句创建用户临时表。 有关详细信息,请参阅 CREATE TABLE 和 CREATE TABLE AS SELECT。 |
| 查看 tempdb 中现有表的列表。 | SELECT * FROM tempdb.sys.tables; |
| 查看 tempdb 中现有列的列表。 | SELECT * FROM tempdb.sys.columns; |
| 查看 tempdb 中现有对象的列表。 | SELECT * FROM tempdb.sys.objects; |