从多台 PC 连接时,Oracle 是否为同一用户分配不同的 PGA?
Does Oracle allocate different PGA's for the same user when connected from multiple PCs?
假设我已经用来自不同 PC 的同一用户连接到数据库 3 次。 Oracle 是否为它们中的每一个创建单独的 PGA 区域,还是只创建一个?如果是,它如何处理来自同一用户连接的不同会话并同时执行的多个查询?
每个会话(假设您使用的是专用会话)在 PGA 中为诸如排序之类的事情分配单独的内存。这些会话来自 1 个用户还是 100 个用户并不重要。每个会话都有自己的内存。
回答您的问题
Oracle 是为每个区域创建单独的 PGA 区域,还是只创建一个?
程序全局区或 PGA 是为一个进程分配和私有的内存区域。 PGA的配置取决于Oracle数据库的连接配置:共享服务器或专用。
在共享服务器配置中,多个用户共享到数据库的连接,最大限度地减少服务器上的内存使用,但可能会影响用户请求的响应时间。在共享服务器环境中,SGA 代替 PGA 保存用户的会话信息。共享服务器环境非常适合通过不频繁或短暂的请求同时连接到数据库的大量连接。在专用服务器环境中,每个用户进程都有自己的数据库连接; PGA 包含此配置的会话内存。 PGA 还包括一个排序区域。只要用户请求需要排序、位图合并或散列连接操作,就会使用排序区域。
因此,答案是肯定的,假设您没有使用共享服务器配置。
如果是一个,它如何处理来自同一用户连接的不同会话并同时执行的多个查询?
在 SHARED SERVER 配置中,SGA 保存用户的会话信息而不是 PGA。这正是使用同一服务器进程处理多个连接的要点。共享服务器任务必须在 SGA 中保留这些工作区域,因为所有调度程序进程都处理来自任何用户进程的请求。
假设我已经用来自不同 PC 的同一用户连接到数据库 3 次。 Oracle 是否为它们中的每一个创建单独的 PGA 区域,还是只创建一个?如果是,它如何处理来自同一用户连接的不同会话并同时执行的多个查询?
每个会话(假设您使用的是专用会话)在 PGA 中为诸如排序之类的事情分配单独的内存。这些会话来自 1 个用户还是 100 个用户并不重要。每个会话都有自己的内存。
回答您的问题
Oracle 是为每个区域创建单独的 PGA 区域,还是只创建一个?
程序全局区或 PGA 是为一个进程分配和私有的内存区域。 PGA的配置取决于Oracle数据库的连接配置:共享服务器或专用。
在共享服务器配置中,多个用户共享到数据库的连接,最大限度地减少服务器上的内存使用,但可能会影响用户请求的响应时间。在共享服务器环境中,SGA 代替 PGA 保存用户的会话信息。共享服务器环境非常适合通过不频繁或短暂的请求同时连接到数据库的大量连接。在专用服务器环境中,每个用户进程都有自己的数据库连接; PGA 包含此配置的会话内存。 PGA 还包括一个排序区域。只要用户请求需要排序、位图合并或散列连接操作,就会使用排序区域。
因此,答案是肯定的,假设您没有使用共享服务器配置。
如果是一个,它如何处理来自同一用户连接的不同会话并同时执行的多个查询?
在 SHARED SERVER 配置中,SGA 保存用户的会话信息而不是 PGA。这正是使用同一服务器进程处理多个连接的要点。共享服务器任务必须在 SGA 中保留这些工作区域,因为所有调度程序进程都处理来自任何用户进程的请求。