共享服务器,是多线程服务器或MTS。在连接建立的时候,Listener首先接收到客户端的建立连接的请求,然后Listener去生成一个叫做调度器的进程与客户端进行连接。调度器把把客户端的请求放在SGA的一个请求队列中,然后在共享服务器连接池中查找有无空闲的连接,然后让这个空闲的服务器进程进行处理。处理完毕以后再把处理结果返回给用户。如果采用这种连接方式,就不会对每条用户连接创建另外的线程或新的进程。
利用共享服务器,就不需要为10,000个数据库会话创建10,000个专用服务器,只需建立很少的一部分进程/线程,这些进程/线程将由所有会话共享。这样Oracle就能让更多的用户与数据库连接,否则很难连接更多用户。采用共享服务器模式,共享进程通常与数据库一同启动,使用ps命令可以看到这个进程。
共享服务器连接模式的优点在于服务器进程的数量可以得到控制,不大可能出现连接数过多而造成服务器内存崩溃。但是由于增加了复杂度以及请求相应的队列,可能性能上会有所下降。采用专用服务器连接模式比采用共享服务器连接模式效率要高。
共享服务器模式缺点:
1、共享服务器的代码路径比专用服务器长,会比专用服务器慢。
2、共享服务器是串行的,存在人为死锁的可能,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,且极可能死锁。
3、存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待。
4、共享服务器模式限制了某些数据库特性,连接、会话的跟踪信息可能分布在不同的独立跟踪文件中,重建会话比较困难。
了解更多服务器及资讯,请关注梦飞科技官方网站,感谢您的支持!