【发布时间】:2023-04-02 16:01:01
【问题描述】:
我有一个 Web API,其中包含 C# 中的数据库插入逻辑 (ado.net)。当多个用户(例如 100 个用户)调用 Web API 时,每次为多个请求打开和关闭 SQL Server 连接时。它会降低性能。
如何让单个 SQL Server 连接同时处理多个请求?我必须保持 SQL 连接只打开一次并在一段时间后关闭,以便在此期间它应该考虑多个请求并在数据库中插入记录。
请提出建议。
【问题讨论】:
-
您如何确认这会影响性能。 SQL 连接池是高度优化的。并且尝试自己管理连接池是一个众所周知的坏主意。为什么你认为你可以比现在更好地优化它?您测量的哪些性能指标表明这是瓶颈?
-
.Net 使用连接池来优化此场景,在需要时打开/关闭/处理连接,这是最佳实践。
-
你怎么知道连接打开和关闭是需要时间的?你做过性能测试吗?该测试的代码在哪里?你使用的代码在哪里?
-
当你关闭一个连接时,它只是释放它以供在池中使用,它实际上并没有在数据库服务器上关闭它,它是 ADO.Net 内部的。
-
ASP.Net 请求-响应不会发生在其自己的隔离进程中,而是发生在工作进程(应用程序池)中的线程上,这意味着连接池可用于应用程序中的所有会话。
标签: c# .net sql-server ado.net