Oracle专有(dedicated)连接和共享(shared)连接
专有连接 --- 客户端的用户进程和服务器进程一一对应,用户进程不直接访问数据库,而是将请求发给服务器进程,让服务器进程执行具体的命令并返回结果。 这个连接用于专门处理该客户端的所有请求,直到用户主动断开连接或网络出现中断。在连接处于空闲时,后台进程PMON会每隔一段时间,测试用户连接状况,如果连接已断开,PMON会清理现场,释放相关的资源。 专用连接相当于一对一的连接,能够快速的响应用户的请求。当然,在连接的时候,首先要创建PGA(Program global area)。因为是专有,所以如果并发非常多,要求的内存大小也不少。
在专用连接中,连接所需要的资源全部在PGA中分配。该内存区为指定连接私有,其它进程不能访问。 专用连接采用一对一的连接方式,能很快的响应用户的请求,但是,如果连接用户太多时,由于要对每一个连接分配资源,因此,连接数受硬件限制比较大
共享连接 --- 为了克服以上硬件资源的问题,Oracle 提出了共享连接的连接方法,即用一个服务器的进程响应多个用户连接,与专用连接有连接时才创建PGA不同,共享连接在实例一启动,就分配指定数量的服务器进程,所用户的连接,以排队的方式,由分配器指定给服务器进程,其它的进程排队等待。只要用户的请求一执行完,就会马上断开连接,分配器会把空闲的服务器进程分配给其它排除的进程。
采用共享连接可以有效的提高服务器资源的利用率,但是对一个分配器,只支持一种协议,每个分配器有自已的排队队列,在请求的任务完成后,由分配器将操作结果返回给相应的用户进程。但是共享连接的建立, 需要Oracle的监听进程、分配器、共享服务器进程才能共同完成一个连接的创建,所以连接的分配也需要一定的时间和资源。
在共享连接中,sort_area_size 将在 SGA 的 Large_pool 中分配。
上面所说的是两种连接的创建方法和管理方法,在理想的情况下,对于长事务或大事务,使用专用连接,可以有效的提高系统的性能,减少用户等待和事务的排队,提高系统的利用率。对于超短事务和短事务、小事务,使用共享连接方式,可以在资源与效率之间达到一种平稀。比如对于OLTP 系统,使用专用连接,而对于网站等,可以使用共享连接。
那么,能不能在OLTP系统中使用共享连接呢?如果能使用,那么,能不能提高性能呢?
OLTP系统,一般而言,有较多的长事务和大事务,如用户的某几步操作,必须作为一个事务。对于这种情况,我们分析一下,看看,会发生什么样的情况:
分析首先有一个前提,那就是用户请求数要大于共享服务器进程数,否则,减去分配器管理性能支出,共享连接的性能要低于专用连接。
如果用户请求数大于共享服务器进程数,那么肯定有请求是在排队,假定目前一个共享服务器进程正在执行一个长事务,那么请求队列就要一直等,直到当前的事务结束。从用户请求的角度看,很明显,响应的时间加长了。从服务器角度看,我们先看一下由网友 WESTLIFE_XU 提供的实例:
共享连接和长事务是背道而驰的,长事务的共享连接会造成shared 进程的严重排队,造成性能的严重下降,给你看一个极端的例子,以前的同事公司的。
举个例子,200个request共享比说10个共享进程,每个shared进程在一个时间内只能处理一个request,也就是说10个进程在同一时间内只能处理10个request,如果一个request需要很长的处理,会造成其它请求的严重排队。
shared进程要求客户端的每个request要特别快,如果客户端的一个request就占了很长时间,那别的request就得一直等着,共享就没有什么意义了。
从上面可以看出,如果在有大事务和长事务的OLTP系统中,系统会比原来更慢!
综合来看,共享连接和专用连接各有所长,关键是看应用,能适用于自已应用的连接方式,就是好方式。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-676634/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-676634/
Oracle专有(dedicated)连接和共享(shared)连接相关推荐
- ORACLE专有模式与共享模式
专有模式:当一个用户请求连接到ORACLE的时候,ORACLE会专门的为这个user process 分配一个server process. 共享模式:一个server process可以服务多个us ...
- ftp无法与服务器建立连接_建立与Oracle数据库服务器连接的两种连接模式
建立与Oracle数据库服务器连接的两种连接模式(专用服务器与共享服务器) 在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式.在Orac ...
- mysql连接池永驻_【学习笔记】Oracle连接池 数据库常驻连接池(Database Resident Connection Pool)案例介绍...
天萃荷净 分享一篇关于应用程序与Oracle数据库连接的连接方法介绍,数据库常驻连接池(Database Resident Connection Pool)案例介绍 一.介绍常驻连接池(Databas ...
- Oracle 11g新特性之缓存与连接池
Oracle 11g新特性之缓存与连接池 上一篇 /下一篇 2008-03-26 16:03:19 / 个人分类:Oracle 数据库 11g面向 DBA 和开发人员的重要新特性 查看( 414 ) ...
- python oracle连接池_python - DBUtils 连接池减少oracle数据库的连接数
问题: 接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数 分析: 仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控 ...
- Oracle VM VirtualBox创建虚拟机教程并解决连接网路问题和连接Xshell
Oracle VM VirtualBox创建虚拟机教程并解决连接网路问题和连接Xshell 一.安装Virtual Box 1.什么是Virtual Box: VirtualBox 是一款开源虚拟机软 ...
- oracle in的用法_oracle 左连接、右连接、全外连接、内连接、以及 (+) 号用法
Oracle中的连接可分为,内连接(INNER JOIN).外连接(OUTER JOIN).全连接(FULL JOIN),不光是 Oracle,其他很多的数据库也都有这3种连接查询方式. Oracle ...
- 无线网卡实现AP 热点功能,共享Internet连接设置
1. 首先确定无线网卡是否支持AP热点功能 windows 命令提示符中输入 "netsh wlan show drivers". 命令输出中,有一行""支持的 ...
- weblogic oracle连接池配置文件,weblogic连接池的配置
Weblogic中访问oracle数据库的连接池可以采用三种JDBC方式进行配置 一 在weblogic console中按如下配置 建立connection pool ,并修改startWeblog ...
最新文章
- 为什么抢红包抢不过别人?学了这个算法就明白了!
- 芯片植入:“增强人类”的生物黑科技
- 连接redis的linux命令,redis常见操作命令
- 【 数字信号处理 】定点数的表示之二进制数的原码与补码
- python面向对象生动讲解_Python面向对象语法精讲
- BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)
- C# 实现复杂对象的序列化与反序列化
- iphone升级ios7之后出现蓝框框一直跳的问题
- 常见的一些正则表达式!
- 基于CC2430的基础实验5---时钟模式
- 20个免费的SEO网站分析工具
- 学计算机的什么是镜像,一、什么是windows镜像?什么是Ghost?它们有什么优缺点?...
- 嵌入式文件服务器,嵌入式文件服务器
- Android热更新
- 深度学习_深度学习基础知识_Internal Covariate Shift
- 程序员必读:“五险一金”详解!
- 这才叫爷们! --转载
- wo de wen zhang
- DockWidget
- 墨尔本大学计算机科学要求,墨尔本大学新开设计算机科学硕士(附详细学分要求)...