在正常的企业应用程序中,只有一个用户(设置在hibernate.xml或其他配置中)和多并发连接/多并发会话(因为它的多线程应用程序)。
那么,这一个用户的多个会话会互相交织吗?
发布于 2014-02-06 23:45:03
这取决于你所说的“干涉”是什么意思。
中间层连接池将打开到数据库的许多物理连接。中间层的会话将从池请求连接,做一些工作,并将连接返回到池。假设您的连接池足够大,足以处理来自应用程序的同时调用的数量(根据会话的数量、每个会话需要逻辑连接的时间长度以及每个会话中“思考时间”与“操作时间”的比例),您将不会因为打开连接而遇到争用。
Oracle非常乐意在多个会话中同时运行查询。显然,一个会话有可能与另一个会话争夺资源。如果两个会话都试图更新同一行,则可能会争用相同的行级锁。如果您有足够的会话,您可能会在CPU或RAM或I/O被过度征税的情况下结束,而一个会话创建的负载会导致另一个会话中的性能问题。Oracle并不关心哪个Oracle用户参与了这种争用--对于10个会话(所有会话都以1个用户的身份运行),您可能有相同的潜在干扰,就像假设会话在做相同的事情时,有10个会话在运行,而10个不同的用户在运行。
https://stackoverflow.com/questions/21616385
复制相似问题