首页 > 数据库 > Oracle > ORACLE大师THOMAS经典之四共享与专一模式
本文由一木译编著
请您多指正!
[@more@]在一节里,我们要学习一下客户端请求被ORACLE服务服务时两种最普通方式:专一模式和共享模式后面的机制。我们将要学习在客户端和服务端建立连接时会发生些什么,以致我们能登录到数据库并在库里工作。最后,我们要简短了解一下怎么建立TCP/IP连接(TCP/IP是通过网络联接到ORACLE的所有网络协议中应用得最广泛的协议)和在服务器上的监听进程是怎么回事。监听是用作建立客户端到我们服务器的物理联接的,但是在专一模式或共享模式下是工作方式是不同的。
会话就是在连接的基础上有用户的sql在跑。
我们可以发现,当我们登录到数据库里时ORACLE会为我们创建一个新的进程。这就是我们日常所指的专一进程配置,因为一个服务进程会在会话周期内专一为我服务。对应每一个会话,会有一个对应的新专一服务进程。这个专一进程不是实例组成部分。客户进程会通过网络包直接与专一进程进行通信。这个服务进程会收到我的SQL语句并执行它。如果有需要,它将读数据文件。然后它会在缓存区中查找我的数据。它会执行我的更新语句,会跑我的存储过程,
它的唯一目的就是回应我提交的的SQL请求。
ORACLE同样可以以共享模式接受连接。在这种模式下,我们不能看到每一个用户连接都会有相应的线程或进程。在共享模式下,ORACLE用一批共享进程为用户大量通信。共享服务模式只是简单的连接池机制。相对为10000个会话有10000个专一服务进程的专一服务模式,共享服务模式允许我们用小部分进程或线程,因为它们可以为所有会话共享。这就允许ORACLE连接尽可能多的用户。假设我们的计算机在管理10000专一服务进程的压力下或许会崩溃,但是管理100或1000个共享进程是轻而易举的,但它们服务的客户数并没有减少。也就是说在共享模式中,你可以在数据库服务器端用100个共享服务进程为1000个客户端服务。共享进程通常随数据库一起启动。
共享与专一模式的最大不同就是当一个客户端进程连到数据库时,共享模式中不是直接对话,但是在专一模式下,客户端进程是同服务进程直接对话的。客户端不能直接对话是因为服务进程在共享的。为了实现共享,我们需要另外一种机制叫做对话。ORACLE用一个叫调度进程的进程来实现这个目的。客户端进程通过网络与调度进程对话。然后调度进程会把客户请求放到SGA中的请求队列。哪个空的服务进程会接受这个请求并进行处理。处理完成后,共享模式将结果放到调度进程的返回队列中。调度进程负责监听这个队列,并检查要发送到客户端的结果。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7248175/viewspace-999963/ ,如需转载,请注明出处,否则将追究法律责任。