Oracle,一个用户(应用程序连接)多并发会话(多线程连接)

Oracle,一个用户(应用程序连接)多并发会话(多线程连接),oracle,hibernate,enterprise-architect,Oracle,Hibernate,Enterprise Architect,在普通的企业应用程序中,只有一个用户(在hibernate.xml或其他配置中设置)和多并发连接/多并发会话(因为它是多线程应用程序) 那么,这两个用户的多会话相互干扰吗?取决于您所说的“干扰”是什么意思 中间层连接池将打开许多到数据库的物理连接。中间层中的会话将请求池中的连接,进行一些工作,并将连接返回到池。假设您的连接池足够大,足以处理来自应用程序的同时调用数(基于会话数、每个会话需要逻辑连接的时间长度以及每个会话中“思考时间”到“操作时间”的分数),您不会因为打开连接而遇到争用 Oracl

在普通的企业应用程序中,只有一个用户(在hibernate.xml或其他配置中设置)和多并发连接/多并发会话(因为它是多线程应用程序)

那么,这两个用户的多会话相互干扰吗?

取决于您所说的“干扰”是什么意思

中间层连接池将打开许多到数据库的物理连接。中间层中的会话将请求池中的连接,进行一些工作,并将连接返回到池。假设您的连接池足够大,足以处理来自应用程序的同时调用数(基于会话数、每个会话需要逻辑连接的时间长度以及每个会话中“思考时间”到“操作时间”的分数),您不会因为打开连接而遇到争用


Oracle非常乐意在多个会话中同时运行查询。不过,显然,一个会话可能会与另一个会话争夺资源。如果两个会话都试图更新同一行,那么它们可能会争夺同一行级别的锁。如果您有足够的会话,您可能最终会遇到CPU、RAM或I/O负担过重的情况,并且一个会话产生的负载会导致另一个会话出现性能问题。Oracle不在乎哪位Oracle用户参与了此类争用——如果有10个会话以10个不同用户的身份运行,假设会话在做相同的事情,那么10个会话都以1个用户的身份运行时,您可能会受到相同的干扰。

我的意思是,所有并发会话都使用一个Oracle帐户,甲骨文会处理这个问题吗?或者Oracle只是使用会话id来区分,而不是用户帐户?@lovespring-如果有10个会话作为10个不同的用户运行,那么10个会话都以1个用户的身份运行时,您可能会受到相同的干扰。假设中间层连接池正在打开足够数量的会话来处理负载,并且中间层会话正在等待打开新连接或将现有连接返回到连接池,而不是添加更多争用。