【发布时间】:2021-01-05 05:09:47
【问题描述】:
我在 IIS 服务器上发布了一个 ASP.NET MVC 应用程序。我在这里使用网络园艺,我的意思是,应用程序池有多个工作进程来处理传入的请求。这个应用程序也被很多用户客户使用。
此应用调用使用一些本地临时表的 SP(#example)。举个例子:
BEGIN
if OBJECT_ID(N'tempdb..#MyTempTable') IS NOT NULL
BEGIN
DROP TABLE #MyTempTable
END
CREATE TABLE #MyTempTable
(
someField int,
someFieldMore nvarchar(50)
)
... Use of temp table here
... And then drop table again at the end..
DROP TABLE #MyTempTable
END
我担心并发性,例如,如果用户客户端调用存储过程而另一个先前的调用同时运行会发生什么?这里可能是并发问题吗?
【问题讨论】:
-
临时表在它们创建的范围内是本地的,当它们超出范围时会自动删除(您不需要在过程末尾的
DROP)。本地临时表不会与其他会话冲突。大量使用临时表的唯一并发问题是从 DBA 的角度来看,其中多个 tempdb 文件可以减少分配页面争用。顺便说一句,SQL 2008 不受支持,并且在以后的版本中有性能改进,例如临时表元数据缓存。
标签: asp.net-mvc sql-server-2008 asp.net-mvc-4 iis web-garden