收到SQL表的多个同时更新请求时会发生什么?

时间:2012-10-26 12:47:24

标签: sql-server-2008

我在SQL server数据库中有一个表,我在其中记录用户的最新活动时间。有人可以确认我,当不同用户同时收到多个更新请求时,SQL服务器将自动处理该场景。我希望此表上有25-50个并发更新请求,但每个请求都负责更新表中的不同行。我需要一些额外的东西,如连接池等。?

1 个答案:

答案 0 :(得分:5)

是的,Sql Server将处理这种情况。

这是一个SGDB,它期望像这样的场景。

当你在Sql中插入/更新/删除一行时,sql会锁定表/行/页面以确保你能够做你想做的事情。完成插入/更新/删除行后,将释放此锁定。

选中此Link

introduction-to-locking-in-sql-server

但是你应该做一些事情:

1 - 确保你会快速做你想做的事。由于锁定问题,如果您长时间保持连接,则可能会锁定对同一个表的其他请求,直到您完成为止,这可能会导致超时。

2 - 始终使用交易。

3 - 确保调整索引的填充因子。在MSDN上查看Fill Factor

4 - 根据您的需要调整Isolation level

5 - 删除未使用的索引以加快插入/更新速度。

连接池与您的问题无关。连接池是一种技术,可以避免每次发送请求时创建与数据库的新连接的额外开销。在C#和其他使用ADO的语言中,这是自动完成的。看看这个:SQL Server Connection Pooling

其他可能有用的链接:

best-practices-for-inserting-updating-large-amount-of-data-in-sql-2008

Speed Up Insert Performance