Entity framework core 在连接池中使用大量不同的连接字符串对效率有害吗?

Entity framework core 在连接池中使用大量不同的连接字符串对效率有害吗?,entity-framework-core,npgsql,Entity Framework Core,Npgsql,在我们的数据库中,我们需要动态地创建和使用模式。为此,我们希望使用动态DbContext,它在构造时接受模式名称,并将其用于此上下文中的所有查询 我们的第一个想法是在search path connection string参数中指定模式,从而产生数千个不同的连接字符串。我的问题是,这是否是npgsql中连接池策略的预期用例。我读到,为每个连接字符串管理一个单独的连接池,这将导致数千个连接池每个都有一个或两个连接,这似乎是浪费。但另一方面,也有一些常见的用例,其中每个用户都有自己的DB角色。由于

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

我们的第一个想法是在search path connection string参数中指定模式,从而产生数千个不同的连接字符串。我的问题是,这是否是npgsql中连接池策略的预期用例。我读到,为每个连接字符串管理一个单独的连接池,这将导致数千个连接池每个都有一个或两个连接,这似乎是浪费。但另一方面,也有一些常见的用例,其中每个用户都有自己的DB角色。由于角色也在连接字符串中指定,因此此场景还必须处理数量不断增加的连接字符串

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

通读其中的内容,其中包括处理这一问题

tl;dr yes,连接字符串中的任何差异都会导致不同的连接池,这可能会对性能产生重大影响,因为连接绑定到特定租户,无法共享-在一般情况下,强烈建议只使用一个连接池

解决此问题的一种方法(如本期所述)是在每次切换到新租户时手动设置搜索路径