使用 linq 时拥有多个数据库连接的最简单方法是什么

发布于 2024-08-10 22:18:13 字数 210 浏览 4 评论 0原文

最好我希望 linq 使用 X 个数据库连接而不是 1 个来加快速度。

现在唯一的方法是打开 X 连接,创建 X 数据库上下文,并将它们关联起来。 如果我能以某种方式告诉 linq 使用 X 连接,那就更容易了。

这可能吗?或者有其他方法可以加快数据库查询速度吗?

谢谢

编辑:更改了标题,因为它具有误导性(根据其中一位回答者的说法,我同意)

Optimally I would like linq to use X database connections instead of 1 to speed things up.

The only way now is to open X connections, and create X databasecontexts, and associate them.
It would be easier if somehow I could tell linq to use X connections.

Is this possible? Or is there another way to speed up database queries?

thanks

edit: changed the title since it was misleading (according to one of the answerers, and I agree)

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

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

发布评论

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

评论(1

橘寄 2024-08-17 22:18:13

我认为标题具有误导性。连接池:您不需要这样做。 Linq2SQL 在底层使用 ADO.NET SqlConnection,默认情况下是连接池。

在我看来,您想要完成的事情就像尝试并行查询数据库。仅当您尝试执行不同的查询或可以很好地并行化的查询时,这才有用。这样的查询也不应该严重依赖锁/事务。缓慢的查询通常不会属于这种情况。

使用一个连接加载同一查询的前 50%,使用另一个连接加载后 50% 不会给您带来任何好处,数据库服务器是那里的瓶颈。

LinqToSql SQL 查询性能不佳的原因还有很多。其中之一称为选择 N+1 问题。 Ayende 有一篇关于在 NHibernate 中对抗它的 很棒的帖子,相当于原则适用于 L2S。

如果以上所有内容对您没有帮助,您可能需要查看 SQL Server MARS 允许您在一个连接上并行查询数据库。

I think the title is misleading. Connection Pooling: You don't need to do that. Linq2SQL uses an ADO.NET SqlConnection under the hood which is connection pooled by default.

What you are trying to accomplish seems to me like trying to query the database in parallel. This can only beneficial if you are trying to execute different queries or a query that can be very well parallelized. Such a query also should not heavily rely on locks/transaction. Slow queries generally tend not to be of that kind.

Loading the top 50% of the same query with one connection and the bottom 50% with another won't bring you any benefits, the Database Server is the bottleneck there.

There are a lot of other reasons why LinqToSql SQL queries perform bad. One of them is known as the Select N+1 problem. Ayende has a great post about fighting it in NHibernate, equivalent principles apply in L2S.

If all of the above does not help you, you might want to take a look at SQL Server MARS that allows you to query a database in parallel on one connection.

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