【oracle】oracle的两种工作方式

简单提一下关于oracle的两种工作方式
Dedicated Server 和 Shared Server
在实际的工作中我们基本上都在用
Dedicated Server专用的服务器模式
而不用Shared Server模式

正常的情况
一个用户的连接,连上来以后
针对这个连接专门的启一个oracle的serverprocess
用户连接和serverprocess对接
这个会话中用户连接的所有的请求由对接的serverprocess响应
这个serverprocess专门为这个用户连接服务
它们之间是一对一的关系
这叫专用服务器模式即Dedicated server
另外一种模式

oracle启来一堆进程
叫dispatcher叫调度进程
再启一堆shared server进程就是serverprocess
比如启了8个serverprocess进程和3个dispatcher调度进程

这时一个用户连接连上来了
随机的选一个调度进程
再一个连接上来选另外一个调度进程
每一个连接上来都依次的选一个调度进程

现在有三个调度进程
如果上来90个连接
一个dispatcher就负责30个连接
这时只有8个serverprocess
而90个连接会送一些sql语句过来

比如其中一个客户连接会送sql语句过来
负责的dispatcher会把这个sql语句放到一个队列中
所有三个dispatcher只要他们收到sql语句
他们就会往队列里面放
dispatcher负责收集客户连接送来的sql语句放到队列里面去
然后8个serverprocess它们会不停的查这个队列
比如其中一个serverprocess轮询这个队列
发现里面有一个sql拿出来就去执行去
所以这8个serverprocess不停的去轮询这个队列
找到sql语句就执行

会出现一种情况
90个连接
对应着3个dispatcher对应着8个serverprocess
真正工作的是8个serverprocess
dispatcher只是一个调度的作用它的负载很小
主要的负载在serverprocess上
这叫shared server

这两种方式都各有好处

Dedicated Server专用的服务器模式
每个连接有专用serverprocess
每个连接的请求会得到最及时的响应
Shared Server模式
减少了serverprocess的数量
8个serverprocess为90个连接服务

所以对后者第二种服务器模式来讲
比如说我是个电子商务网站是一个数据库
这个数据库有一万个人要同时访问它
这一万个人访问时候量都不大但人非常多
一万个连接访问数据库
这个时候如果说用第一种方式的话
这个数据库根本就受不了一万个serverprocess
我们只能用第二种方式
第二种方式就适合对数据库的连接量特别大
同时每一个连接负载又很小的情况

第一种情况是主要的一般用Dedicated Server的serverprocess
对数据库的连接数量有限
而且每一个连接的负载都比较大

比如说有200个连接对数据库的连接
而且200个连接每个连接的负载都比较大
我们就用dedicated serverprocess

关键看每个连接的负载的情况。
这就是专用和共享

猜你喜欢

转载自blog.csdn.net/sun337939896/article/details/79096770