[计算机软件及应用]第4章数据库的体系结构
多线程服务器模式 概念 所谓多线程服务器模式是指在数据库中创建并启动一定数目的服务器进程,在调度进程的帮助下,这些服务器进程可以为任意数量的用户进程提供服务,即一个服务器进程可以被多个用户进程共享,所以多线程服务器模式又称为共享服务器模式 在创建数据库实例时,每个调度进程将自己的监听地址告诉Oracle监听程序,监听程序根据监听地址把用户进程的请求传递给相应的调度进程。每个调度进程只能为使用特定网络协议连接实例的用户进程服务。当监听器监听到一个用户进程后,检查是否可以使用多线程服务器进程,如果可以,则将该用户进程传递给某个调度进程,然后用户进程直接与该调度进程通信。如果没有找到合适的调度程序,则将启用一个专用服务器进程为用户进程服务 多线程服务器模式的体系结构 多线程服务器模式工作过程 在客户端创建一个用户进程,连接数据库。 位于服务器中的Oracle监听程序探测到用户进程请求后,首先验证用户进程提供的用户名和口令,验证通过后将该用户进程分配给一个调度进程。用户进程直接与调度进程进行交互。 用户提交一条SQL语句,调度进程对SQL语句进行处理,然后将处理结果放入位于SGA区中的一个“请求队列”中,同时将调度程序ID也存入请求队列。 当某个共享服务器进程空闲时,从“请求队列”中取出一条处理后的SQL语句,并对该语句进行解析和执行,得到它所请求的数据。 共享服务器进程将处理结果放入SGA区中的一个“响应队列”中。 调度程序定期检查“响应队列”,如果发现有自己送出请求的处理结果,则将结果取出。调度程序根据处理结果中保存的调度程序ID来标识该结果是否是自己的。 调度程序将处理结果返回给用户进程。 小结 数据库实例的概念 实例内存区的组成与功能 实例后台进程的分类与功能 数据库服务器操作模式 * 段是oracle数据库中的分配单位,对象如表、索引等都是以段为单位进行分配。当创建一个表时将创建一个表段,创建一个索引时就创建一个索引段。每一个消耗存储空间的对象最终被存储到一个单一的段中。有回滚段、临时段、聚簇段、索引段等。 * 区又叫盘区,是数据文件中一个连续的分配空间,它比块要大,由块组成。有些对象分配空间时可能至少需要两个盘区,比如回滚段,而这两个盘区不一定要求相连。区的大小从一个块到2GB不等 * 区又叫盘区,是数据文件中一个连续的分配空间,它比块要大,由块组成。有些对象分配空间时可能至少需要两个盘区,比如回滚段,而这两个盘区不一定要求相连。区的大小从一个块到2GB不等 * * 块是数据存储的物理单位,也是数据文件中最基础的单位,数据直接存储在块上。是oracle空间分配的最小单位。oracle中的块大小常见的有三种,2KB、4KB、8KB。块的大小在数据库创建时就已经固定下来,数据库中每个块的大小都是相同的,而且所有的块都有相同的格式,由“块头+表目录+行目录+空闲空间+数据空间”组成。块头包含着块类型(比如是表块、还是索引块)的信息、磁盘上块的位置等信息。表目录(table directory),如果有的话,包含着此块中存储各行的表的信息(如果一个块中存有多个表中的数据)。行目录(row directory)包含着数据行的描述信息,它是一个指针数组,指示了每一行在数据块中的物理位置。块头、表目录、行目录统称为块开销(block overhead),是oracle原来统计、管理块本身的。剩下的两部分很简单,已经存有数据的就是数据空间,暂时没存的就是空闲空间。 * * 裸设备,英文叫Raw Device,你可以把它理解成没有文件系统的存储设备,如刚买回来一块硬盘,分完区(或者不分区),不执行格式化操作,直接挂到操作系统上使用。如果你脑细胞转得足够快,这会儿是不是已经琢磨过来了,没错,裸设备就是一种底层原始设备,操作系统提供的文件系统不过是于裸设备之上加了一层管理罢了,因此,某些情况下直接将数据文件、日志文件、控制文件存储于裸设备,能够在一定程度上提高I/O的读写效率(跳过了操作系统层嘛)。不过,号称Oracle的下一个版本12g就不再提供对裸设备的支持。 * 如当前在写LOG日志组1,那么LOG日志组1即为CURRENT状态,当该重做日志文件组中的日志文件被写满数据后,后台进程LGWR就开始写下一个,即LOG日志组2(此时LOG日志组1状态被切换为ACTIVE状态,LOG日志组2的状态则变为CURRENT)。以此类推,当所有的日志文件都被写满后,后台进程LGWR再次重新写入LOG日志组1…… 共享池大小 SHARED_POOL_SIZE 合适的共享池大小,可使编译过的程序代码长驻内存,大大降低重复执行相同的SQL语句、PL/SQL程序的系统开销,从而提高数据库的性能。 共享池 大型池 功能 大
原创力文档

文档评论(0)