C# NHibernate只读会话池?

C# NHibernate只读会话池?,c#,nhibernate,C#,Nhibernate,为只读操作共享NHibernate会话是否有里程数?如果一个系统执行大量的读取而只有少量的写入,那么创建一个会话池是有意义的,这些会话可以被重用用于读取数据,并且只有在您明确地必须提交更改时才打开一个新会话 我的想法是,值得一提的是,如果你在一分钟内收到1000个读取数据的请求。如果这些读取以毫秒计是短暂的,那么一个会话池说3可以处理所有的读取,而不必创建和处理1000个会话 创建和处理会话非常轻量级,连接由connectionpool处理。在IMO中,使用会话池没有任何好处。它有一个缺点,因为

为只读操作共享NHibernate会话是否有里程数?如果一个系统执行大量的读取而只有少量的写入,那么创建一个会话池是有意义的,这些会话可以被重用用于读取数据,并且只有在您明确地必须提交更改时才打开一个新会话


我的想法是,值得一提的是,如果你在一分钟内收到1000个读取数据的请求。如果这些读取以毫秒计是短暂的,那么一个会话池说3可以处理所有的读取,而不必创建和处理1000个会话

创建和处理会话非常轻量级,连接由connectionpool处理。在IMO中,使用会话池没有任何好处。它有一个缺点,因为它将所有加载的对象都保存在会话缓存中,如果会话被重用,可能会导致内存泄漏和性能下降。

创建和处理会话的重量非常轻,连接由connectionpool处理。在IMO中,使用会话池没有任何好处。它有一个缺点,因为它在会话缓存中保存每个加载的对象,如果会话被重用,这可能会导致内存泄漏和性能下降。

您的想法适用于已经存在的数据库连接,您不需要做任何特殊的事情,默认情况下它是启用的

NHibernate会话不等于数据库连接。会话是NHibernate对模式的实现。共享工作单元可能是危险的,因为每个工作单元都会保留它为跟踪更改而加载的所有对象,因此它们不能被垃圾收集。即使在将UOW返回到池之前清除它,也没有意义,因为创建UOW/ISession很便宜,它不会分配数据库连接


如果您想使用NHibernate优化内存消耗,请看一下这一点。

您的想法适用于已经存在的数据库连接,您不需要做任何特殊的事情,它在默认情况下是启用的

NHibernate会话不等于数据库连接。会话是NHibernate对模式的实现。共享工作单元可能是危险的,因为每个工作单元都会保留它为跟踪更改而加载的所有对象,因此它们不能被垃圾收集。即使在将UOW返回到池之前清除它,也没有意义,因为创建UOW/ISession很便宜,它不会分配数据库连接

如果您想使用NHibernate优化内存消耗,请看一下这个