我试图理解tempDB
,以下是我脑海中浮现的疑问。tempDB
中数据的生存期是多少?假设查询正在执行某些Order By
,并使用tempDB
执行该操作。该查询完成后,其他人也会执行利用tempDB
的查询。第二个查询会在tempDB
中找到第一个查询所写的记录,还是将其删除?
在SQL引擎的tempDB
内部是否创建了任何可见的表?我如何知道由于该查询而创建的临时表? Sql引擎是否遵循任何命名约定来命名这些临时表?
我是tempDB
的新手,请原谅我提出这样愚蠢(如果有的话)的问题:-)
如果有人可以向我指出可以帮助我了解tempDB的良好资源,那将是非常不错的。
最佳答案
临时表存储在tempdb中,直到断开连接为止(或者在使用最后一个连接的全局临时表中断开连接时)。当您完成了使用drop table语句使用表时,也可以(这样做是一种很好的做法)。
不,如果其他人是本地临时表,则其他人将看不到您的临时表(他们可以查看和使用全局临时表)。多个人可以运行使用相同临时表名称的命令,但它们不会在本地临时表中重叠,因此您可以有一个名为#test的表,其他10,000个用户也可以,但是每个用户都有自己的结构和数据。
您通常不想在tempdb中查找临时表。可以检查是否存在,但这是我唯一一次直接引用tempdb的情况。只需使用您的临时表名称。以下示例检查存在性
IF OBJECT_ID('TempDB.dbo.#DuplicateAssignments') IS NOT NULL
BEGIN
DROP TABLE #DuplicateAssignments
END
通过用#开头(对于本地表,您将使用999.9%的时间)和为全局临时表加上##来命名临时表,然后使用所需的其余名称。
关于sql - tempDB如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1595214/