4.5 数据库的连接模式
当用户需要访问数据库时,在客户端要建立一个用户进程,在服务器端,需要为用户进程分配一个服务器进程,两个进程之间建立连接,服务器进程处理用户进程的请求。客户端应用程序可以是SQL*Plus、EM、RMAN,或者用户自己开发的Java应用程序。
用户进程必须通过服务器进程才能访问数据库实例。服务器进程接受用户进程的请求,解析并执行用户进程发送的SQL命令,然后检查数据库高速缓存。如果用户访问的数据恰好就存储在缓冲区中,那么服务器进程直接在缓冲区中对数据进行处理,并将执行结果返回给用户进程。否则,服务器进程将从数据文件中读取所需的数据,并将数据复制到数据库高速缓存中,然后在数据库高速缓存对数据进行处理。
一个服务器进程可以仅为一个用户进程服务,也可以同时为多个用户进程服务。根据用户进程是否可以共享服务器进程,Oracle提供了两种数据库连接模式:专用数据库连接模式和共享数据库连接模式。
4.5.1 专用数据库连接模式
在专用数据库连接模式下,服务器进程与用户进程是一一对应的。每当有一个用户进程试图与数据库服务器建立连接时,数据库服务器便启动一个服务器进程为用户进程服务。而当用户进程访问结束,断开连接时,服务器进程也自动终止。图4.5表示数据库连接模式中的专用连接模式。在这里我们要注意区分数据库、数据库服务器和服务器进程的概念。
在专用数据库连接模式下,各个服务器进程之间完全独立,它们之间并不共享数据。当用户进程连接数据库服务器时,服务器进程便被启动,而且在一直运行,直到用户进程断开连接。
图 4.5 专用连接模式
对于单个用户进程而言,专用连接模式的效率是很高的,因为一个服务器进程只为一个用户进程服务。但是对一个大型的数据库系统而言,这种连接模式未必合适,一方面,在服务器端需要启动大量的服务器进程,以处理众多的用户进程的请求,这对整个系统来说,负载是很重的。另一方面,当用户进程和服务器进程建立连接后,服务器进程的大部分处理时间都在等待用户的输入输出,处理用户的请求只需要很短的时间。
如果用户进程数目较少,或者用户进程需要对数据库进行大量的访问,那么可以考虑将数据库连接模式设置为专用模式。