ORACLE的dedicated server和shared server

ORACLE的dedicated server和shared server
学习过数据库设计与实现课程可知道,现在流行的数据库有三种进程模式,即1+1,1+N,M+N,分别是一个客服端连接对应一个服务进程,N个客户端连接对应一个服务进程,N个客户端对应M个服务进程。
ORACLE有两种进程模式即dedicated和shared,分别对应1+1模式和M+N模式。

dedicated模式下,oracle的进程模式如下图所示


每一个客户端连接都对应了一个oracle的服务进程,服务进程通过SGA来共享资源,这种模式通常用于极耗资源的大型作业运行,例如RMAN的备份、恢复、大批量的数据导入导出等。使用dedicated模式连接数据库需要在TNS中用SERVER=DEDICATED子句声明。shared模式下,oracle的进程模式如下图所示

由图中可知,客户端连接到服务器时,进程分发模块将客户端连接分配到请求队列中,队列中的连接请求被分配到空的oracle服务进程,事务处理完成后,将结果加入到响应队列,服务器将响应队列中的数据分发给对应的客服端。其中服务器进程是复用的,需要在SGA中保存请求和响应队列

采用这种模式,可以使用少量的资源满足大量的客户端连接请求,但如果大型作业较多可能导致服务器长时间没有响应。该模式通常和链接池配合使用,这样可以复用网络连接等资源,进一步提高服务器的负载能力和响应时间。使用该模式需用SERVER=shared指定

性能测试:

写了个简单的python程序测试了一下,不是很科学,但是能说明一下频繁连接下两种模式效率的差异

import os
import cx_Oracle
import datetime
import time
def test(n):
"""test oracle connection pool"""
for i in range(1, n):
conn=cx_Oracle.connect('system', 'qwer1234','local')
cur=conn.cursor()
cur.execute("select * from all_source where rownum<10")
conn.close()
print "start_time:%s" % time.clock()
test(500)
print "execute_time:%s" % time.clock()

结果:

deticated:40.900700508s

shared:26.9655822179s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值