并发写入插入行sqlserver

时间:2011-03-08 13:36:51

标签: sql-server concurrency

从ASP.NET运行MS SqlServer我有一个没有唯一键的访客表。

每当用户加载页面时,我都会在访问者表中执行插入或更新,其中包含用户的IP和页面标题作为键。

1 - 我读了表以查找该密钥是否已经存在,并且根据no或yes,我执行Insert或Update语句。

由于密钥基于用户的IP地址,因此不存在让多个用户同时尝试更新同一行的风险。

现在我的问题是:如果有50个人尝试同时更新/插入同一个表中的不同行,那么SQLServer的行为有多好(或不好)?它会支持1000个concurent写入吗?更?

SQLServer会轻轻排队所有请求并逐一进行(这对我来说没问题)还是会进入某些页锁定的噩梦? 此外,我说没有唯一的密钥,因为我不希望服务器在写操作期间锁定索引。

1 个答案:

答案 0 :(得分:0)

是的,当发生实时锁定时会有一定数量的请求排队,但是插入和更新是面包和黄油。我怀疑只有50个用户碰到彼此是非常罕见的。在不知道细节的情况下,很难预测您可以预期的锁定行为类型。多少次插入与多少次写入。

我认为不存在页面锁定的噩梦,但是当你意识到提供给服务器的IP地址没有与不同计算机上的个人用户一对一地映射时,可能会有一些不眠之夜。