在普通的企业应用程序中,只有一个用户(在hibernate.xml或其他配置中设置)和多并发连接/多并发会话(其多线程应用程序)。
那么,那些ONE用户的多会话会相互冲突吗?
答案 0 :(得分:1)
取决于“干涉”的含义。
您的中间层连接池将打开与数据库的多个物理连接。中间层中的会话将从池请求连接,执行一些工作,并将连接返回到池。假设您的连接池足够大,可以处理从您的应用程序同时进行的调用次数(基于会话数,每个会话需要逻辑连接的时间长度,以及“思考时间”到“操作”的分数)时间“在每个会话中”,您将不会因打开连接而遇到争用。
Oracle非常乐意同时在多个会话中运行查询。但显然,一个会话有可能与另一个会话争夺资源。如果两个会话都尝试更新同一行,则它们可能会争用相同的行级锁定。如果您有足够的会话,最终可能会出现CPU或RAM或I / O负担过重的情况,并且一个会话创建的负载会导致另一个会话出现性能问题。 Oracle并不关心哪些Oracle用户参与此类争用 - 如果有10个会话以10个不同的用户身份运行,那么您将有10个会话干扰所有运行为1个用户的可能性相同假设会议正在做同样的事情。