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

bin*_*inu 5 sql-server-2008

我在SQL Server数据库中有一个表,其中记录着用户的最新活动时间。可以请我确认一下,当同时为不同用户收到多个更新请求时,SQL Server将自动处理该方案。我期望在此表上有25-50个并发更新请求,但是每个请求都负责更新表中的不同行。我是否需要额外的东西,例如连接池等?

Raf*_*cci 5

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

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

当您在Sql中插入/更新/删除一行时,sql会将表/行/页锁定为garantee,您将能够执行所需的操作。完成插入/更新/删除行后,将释放此锁。

检查此链接

介绍了锁定SQL Server

但是您应该做一些事情:

1-确保您可以快速完成所需的任何事情。由于锁定问题,如果您保持连接时间太长,则对同一表的其他请求可能会被锁定,直到完成为止,这可能导致超时。

2-始终使用交易。

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

4- 根据需要调整隔离级别

5-摆脱未使用的索引,以加快插入/更新的速度。

连接池与您的问题不是很相关。连接池是一种避免每次发送请求时都创建与数据库的新连接的额外开销的技术。在C#和其他使用ADO的语言中,这是自动完成的。检查一下:SQL Server连接池

其他可能有用的链接:

在SQL 2008中更新大数据量的最佳实践

加快插入性能