我是hibernate的新手,
从以下链接
Hibernate Session Connection Relationship 我知道一个hibernate会话对象将保存一个连接对象。
所以我的疑问是,如果我在我的服务器中将连接池大小配置为10。是否只有10个人可以在申请中同时工作?
如果我错了,请纠正我。
答案 0 :(得分:2)
部分是的。这意味着只能同时执行10个SQL查询。如果11个客户端在同一时间访问同一页面并且大部分时间花费在一些长时间运行的SQL查询中,那么第十一个客户端很可能必须等待其余10个中的一个完成。
然而,这并不意味着您的应用程序仅限于10个会话/客户端!例如,在Web应用程序中,用户通常会打开一个页面,查看它一段时间,点击链接等。如果您的用户花了9秒钟阅读页面而1秒等待下一页,那么只有10%的时间花在服务器上 - 因此你可以处理100个登录用户。
此外,处理请求不仅仅是关于SQL查询。来回发送数据,解析,渲染...... - 这都需要时间。
基本上:您只能使用10个并发SQL查询,但这意味着可以使用您的应用程序的用户数量增加10倍甚至100倍。
答案 1 :(得分:1)
没错。但这并不会将用户数限制为10,因为在典型的应用程序中,用户单击链接会导致连接使用几毫秒(加载页面的时间),然后盯着几秒钟或几分钟的页面。
因此,如果空闲时间与繁忙时间的比率平均为100,那么您可以期望有1000个用户共享您池中的10个连接,并且一切都应该没问题(这当然是近似值,这不是不考虑突发,长任务等,但你明白了。)
总结一下:用户只在交易期间使用连接,这应该非常短(尽可能短)。这使得许多并发用户成为可能。