EF6实体框架有时在SQL Server上缓慢查询

发布于 2025-01-20 00:48:37 字数 295 浏览 0 评论 0 原文

我们已经在.NET Core中启动了一个新项目。我们刚刚开始,我们正在击中Web API端点,以获取8个记录的一些参考数据。

我们在角度屏幕中注意到,屏幕上(每10个请求)对EF查询大约需要6到15秒才能运行,而不是通常需要的30ms。

在调试时,我们知道我们正在进入 .tolistasync(),然后在SQL Profiler中,我们可以看到它会启动查询,并且需要延迟时间。

因此,第一印象说这是一个SQL问题,但是如果我们在SQL本身中手动运行SQL查询,就永远不会延迟。

有什么想法吗?

We have started a new project in .NET Core. We are just starting out and we are hitting a Web API endpoint to get some reference data of 8 records.

We noticed in our Angular screen that perodically (about every 10 requests) to a screen that the EF query takes about 6 to 15 seconds to run, rather than the 30ms it normally takes.

On debugging we know that we are getting right up to the .ToListAsync() and then in SQL profiler we can see it initiates the query and it take a delayed time.

So first impressions says its a SQL issue but if we run the SQL query manually in SQL itself it never delays.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱自由 2025-01-27 00:48:37

这可能与EFCORE的连接合并设置有关,它不应在每个请求上向DB请求新的连接,而是通过在依赖项管理中添加此连接来启用连接池:

builder.Services.AddPooledDbContextFactory<DbContext>(
o => o.UseSqlServer(builder.Configuration.GetConnectionString("AppContext")));

参考: -

This might have to do with the connection pooling setup of efcore, It should not request a new connection on each request to db, enable connection pooling by adding this in your dependency management:

builder.Services.AddPooledDbContextFactory<DbContext>(
o => o.UseSqlServer(builder.Configuration.GetConnectionString("AppContext")));

reference :- https://learn.microsoft.com/en-us/ef/core/performance/advanced-performance-topics?tabs=with-di%2Cwith-constant

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文