首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tempdb Server锁定

tempdb Server锁定
EN

Stack Overflow用户
提问于 2009-12-07 14:27:12
回答 2查看 2.8K关注 0票数 1

我们的应用程序与客户机器上的另一个应用程序一起运行。我们已经做出了一些努力,以避免长时间运行的锁在tempdb中,因为这显然严重影响并发。但是,另一个应用程序做的事情如下:

begin事务

代码语言:javascript
复制
  **create #Table(...);** 
代码语言:javascript
复制
  **insert into #Table(....) values(...);** 
代码语言:javascript
复制
  **operation\_for\_totally\_six\_seconds().** 

提交;

由于操作需要时间,我们的应用程序被困在等待其他应用程序所要求的锁。

现在,我希望有一种方法将我的应用程序与另一个应用程序隔离开来,例如告诉sql server为我分配另一个tempdb,但我没有找到一种方法。这在某种程度上是可能的,还是将我们的数据库安装在另一个mssql实例上的解决方案?

你好,延斯·诺登布罗

EN

回答 2

Stack Overflow用户

发布于 2009-12-07 16:48:28

长时间运行的锁,因为这显然严重影响并发性。

这一点其实一点也不明显。只有当您和其他应用程序使用相同的锁时,长期持有的锁才是重要的。您发布的代码示例是完全合法的。首先,#temp是一个特定于连接的表,其他连接甚至看不到它。但是,即使它是全局资源,它也属于另一个应用程序,因此您将没有获得锁的业务。

作为练习,打开SSMS查询窗口并运行以下操作:

代码语言:javascript
复制
begin transaction;
create table #temp (a int);

然后打开第二个查询窗口并运行相同的查询窗口。尽管创建了非常相同的#temp表,但QED并不彼此阻塞。

如果tempdb确实是一个瓶颈,那么您需要做更多的调查,并找到发生争用的实际资源。

票数 3
EN

Stack Overflow用户

发布于 2009-12-07 14:43:16

一种选择是在同一台机器上在不同的sql server实例中运行应用程序。这样你就有了自己的tempdb。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1860297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档