1

我是hibernate的新手,

从下面的链接,

休眠会话连接关系 我知道一个休眠会话对象将持有一个连接对象。

所以我的疑问是,如果我在服务器中将连接池大小配置为 10。是否可以仅 10 人同时在应用程序中工作?

如果我错了,请纠正我。

4

2 回答 2

2

部分,是的。这意味着只能同时执行 10 个 SQL 查询。如果 11 个客户端在完全相同的时间访问同一个页面,并且大部分时间都花在了一些长时间运行的 SQL 查询上,那么第 11 个客户端很可能必须等待其余 10 个客户端中的一个完成。

但是,这并不意味着您的应用程序仅限于 10 个会话/客户端!例如,在一个 Web 应用程序中,用户通常会打开一个页面,查看它一会儿,点击一个链接等。如果您的用户花费 9 秒阅读页面并等待 1 秒等待下一页,那么只有 10% 的时间花费在服务器上 - 因此您可以处理 100 个登录用户。

此外,处理请求不仅仅是关于 SQL 查询。来回发送数据,解析,渲染...... - 这一切都需要时间。

所以基本上:您被限制为 10 个并发 SQL 查询,但这意味着可以使用您的应用程序的用户数量增加 10 倍或 100 倍。

于 2012-05-23T17:16:42.613 回答
1

这是正确的。但这并不限制用户数量为 10,因为在典型的应用程序中,用户点击一个链接,这会导致连接使用几毫秒(加载页面的时间),然后盯着页面持续几秒钟或几分钟。

因此,如果空闲时间与繁忙时间的比率平均为 100,则您可以预期有 1000 个用户共享池中的 10 个连接,一切都应该没问题(这当然是一个近似值,不需要考虑到爆发、长时间的任务等,但你明白了)。

总结一下:用户仅在事务期间使用连接,该连接应该非常短(尽可能短)。这就是使许多并发用户成为可能的原因。

于 2012-05-23T17:17:31.177 回答