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