StackOverflow 中关于 NHibernate 和多个数据库(动态连接)的一些问题,让我相信最好的解决方案是保留 SessionFactory 的缓存(每个数据库)和一个缓存到 Configuration,以更快地构建 SessionFactory。
我想知道这种方法是否正确,主要是: SessionFactory 在每个实例的内存消耗和构建时间方面的“权重”是多少?
更多关于我的方法:
已知 1 级和 2 级缓存位于 SessionFactory “领域”中,我们可以假设内存消耗可能与打开的 ISession 的数量有关(包括 1 级缓存)。
对于第二个缓存级别,在我的情况下,数据库共享相同的模式并且有一些通用的只读表,我可以使用全局缓存实现,只在所有 SessionFactories 中共享只读表,这对我的项目来说听起来不错。
我对吗 ?使用这种方法可能会遇到什么样的性能和内存问题?考虑一个 Web 应用程序(ASP.NET MVC,而不是 Webforms)访问数百个(或者可能是数千个)数据库,在每个 HTTP 请求上它需要找到用户数据库并解决对它的访问(获取、使用和处置 ISession)。
连接池:那么连接池呢?在这种方法中管理成百上千个数据库的池应该有什么样的行为?与 NHibernate 一起使用的一些当前实现可能会有所帮助,或者我需要构建自己的?