【问题标题】:Is using a big amount of different connection strings with connection pooling detrimental to efficiency?使用大量不同的连接字符串和连接池对效率有害吗?
【发布时间】:2019-07-10 04:12:48
【问题描述】:

在我们的数据库中,我们需要动态地创建和使用模式。为此,我们希望使用动态 DbContext,它在构造时接受模式名称并将其用于此上下文中的所有查询。

我们的第一个想法是在导致数千个不同连接字符串的搜索路径连接字符串参数中指定模式。我的问题是这是否是 npgsql 中连接池策略的预期用例。我读到为每个连接字符串管理一个单独的连接池,这将导致数千个连接池每个都有一个或两个连接,这似乎很浪费。但另一方面,在常见的用例中,每个用户都有自己的数据库角色。由于在连接字符串中也指定了 Role,因此该场景还必须处理越来越多的连接字符串。

我们有一个备份策略,其中架构包含在 DbContext 的模型中。在这种情况下,我们将不得不管理数千个不同的模型,从而导致创建它们的开销或增加用于缓存它们的 RAM 使用量,但每个上下文都将使用相同的连接字符串。

【问题讨论】:

    标签: entity-framework-core npgsql


    【解决方案1】:

    通读this recent issue,它专门处理这个问题。

    tl;dr 是的,连接字符串中的任何差异都会导致不同的连接池,这会对性能产生重大影响,因为连接绑定到特定租户并且无法共享 - 在一般情况下,强烈推荐只有一个游泳池。

    解决此问题的一种方法(如问题中所示)是每次切换到新租户时手动设置您的 search_path。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 2012-09-17
      • 2011-10-19
      • 2012-02-02
      • 2011-05-23
      • 1970-01-01
      相关资源
      最近更新 更多