我正在尝试理解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 - 临时数据库如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1595214/