tempDB如何工作?

pea*_*kit 13 sql sql-server tempdb

我试图理解tempDB以下是我脑海中浮现的疑惑.

  1. 数据的生命周期是tempDB多少?假设一个查询正在做一些Order BytempDB用于执行该操作.此查询完成后,其他人也执行使用该查询的查询tempDB.第二个查询是否会查找第一个查询所写的记录,tempDB还是会被删除?
  2. 是否在Sql Engine 内部创建了可见tempDB?如何知道由于此查询而创建了哪个临时表?是否有任何命名约定后面的Sql引擎命名这些临时表?

我是新来的tempDB,请原谅我问这么愚蠢(如果有的话)的问题:-)

如果有人能指出一个可以帮助我了解tempDB的好资源,那将是非常好的.

HLG*_*GEM 18

临时表存储在tempdb中,直到连接被删除(或者在使用它的最后一个连接被删除时,在全局临时表的情况下).您也可以(并且这是一个很好的做法)在使用drop table语句完成后,手动删除表.

不,如果它们是本地临时表,则其他人无法看到您的临时表(他们可以查看和使用全局临时表)多人可以运行使用相同临时表名称的命令,但它们不会在本地临时表中重叠,因此您可以有一个名为#test的表,因此可以有10,000个其他用户,但每个用户都有自己的结构和数据.

您通常不希望在tempdb中查找临时表.可以检查是否存在,但这是我唯一一次直接引用tempdb.只需使用临时表名称即可.检查存在的示例如下

  IF OBJECT_ID('TempDB.dbo.#DuplicateAssignments') IS NOT NULL 
  BEGIN 
  DROP TABLE #DuplicateAssignments 
  END  
Run Code Online (Sandbox Code Playgroud)

您可以通过在名称前面加上#来命名临时表(对于本地表,您将使用999.9%的时间)和##作为全局临时表,然后是您想要的名称的其余部分.