连接模式,提高数据库性能的捷径

  一、共享服务器模式。

  共享服务器模式,也叫做多线程服务器模式。在这种模式下,Oracle数据库允许多个用户进程共享非常少的服务器进程。所以,可以同时实现用户并发访问的人数也就大大的增加。如果使用专用服务器模式,则每个用户连接数据库时,每个用户进程需要他自己的专用服务器进程。也就是说,客户端进程与服务器端进程是一一对应的。

  而如果采用共享服务器模式的话,则多个用户可以共用一个服务器进程,也就是说,此时客户端进程与服务器进程是多对一的情况。这主要是通过调度程序来实现的。调度程序将多个加入数据库访问会话请求指引到一个共用队列。服务器进程共享池中某个闲置的共享服务器进程依次从队列中获得一个请求。也就是说,一个很小的服务器进程共享池可以为大量的客户机提供服务。

  共享服务器的优缺点可以利用两句话概括。优点是客户端进程多对一,增加了数据库可以支持的用户数。缺点就是各个用户共享一个进程,对用户访问数据库的性能有所影响。

  具体的来说,在以下应用情景下,可以选择采用共享服务器模式。

  1、 前台客户端数量比较多。

  当大量用户需要连接到数据库并且需要有效的使用可用的系统资源的时候,则需要考虑采用共享服务器模式。具体的来说,像现在采用的一些客户端/服务器端模式的网络应用软件,如ERP系统等等。一方面因为用户人数比较多;另一方面企业由于资金有限,所以购置的是一般的服务器。这些服务器由于硬件方面的一些限制,如数据库系统与前台应用服务器采用统一台服务器。所以往往要求数据库能够充分使用硬件资源,以减少两者之间的冲突。

  在这种情况下,往往采用共享式的服务器模式,比较合适。

  2、 服务器内存限制比较大。

  共享服务器模式下,当连接用户增加时,其内存使用率增加不会很多。因为他们共享一个服务器进程。所以,从这一个角度讲,共享服务器模式可以减少内存的使用。但在专用服务器模式下,内存的使用几乎与用户的数量成比例增加。

  所以,用户若在一些老的服务器上部署Oracle数据库的话,因为其主板对内存的升级有所限制,所以,为了得到一个不错的数据库性能,往往采用共享服务器模式。如此,即时同时访问数据库的用户有所增加,其内存也不会有多大的影响。可以大大的降低内存的压力。

  3、 某些特定功能要求采用共享服务器模式。

  虽然说,共享服务器模式与专用服务器模式在大部分情况下,都是通用的,支持Oracle数据库系统的大部分功能。但是,某一些特定的功能,仍然需要数据库管理员在共享服务器模式下,才能够启用。比较典型的,如Oracle数据库服务器的连接共享、连接集中与负载均衡技术等等。他们必须在共享模式下才能够运行。

  负载均衡用来在群集环境下实现多机共享数据库,以保证应用的高可用性。同时可以自动实现并行处理以及均分负载,还能够实现数据库在故障时的容错和无断点恢复。所以,在一些对于性能与稳定性要求比较高的应用场景中,如银行中,往往都会采用负载均衡技术。此时,数据库管理员在配置数据库的时候,就需要考虑采用共享服务器模式。

  二、专用服务器模式。

  在专用服务器模式下,数据库服务器要求每个用户拥有一个专用服务器进程。也就是说,每个服务器拥有一个服务器进程。数据库服务器把现有的服务器进程地质发回客户机,然后客户机将连接请求重新发送到提供的服务器地质,与专用服务器比较。专用服务器模式由于客户端与服务器端进程是一一对应的,所以,其性能上可能会比较有优势。但是,当用户比较多的时候,则其对服务器的硬件资源,特别是内存,会产生比较大的压力。

  若企业应用场景符合如下特征的话,则采用专用年服务器模式能够取得比较好的效果。

  1、 只有少数客户端。

  若连接到数据库的用户比较少,则专用服务器模式是首选。如企业前台是一个财务管理系统,则其使用的人数就会比较少。因为其往往只涉及到一个部门。但是,其数据量会比较多。因为我们知道,对于每一笔交易都需要在财务系统中进行详细的纪录。所以,虽然只是财务一个部门用,但是其纪录量往往是其他各个部门纪录量的总合。在纪录量多、连接用户又比较少的情况下,采用专用服务器模式,可以说是比较明智的选择。

  2、 为数据仓库搭建的数据库系统。

  数据仓库是数据库技术的一个非常典型的应用。他是一个面向主体、集成、时变、非易失的数据集和,是支持管理部门的决策过程。他跟Oracle数据库一样,都是关系型数据库,其中的纪录以表格的方式存储,并且能够用统一的结构化语言进行数据查询。采用数据仓库的主要目的,是为了及时完成业务处理,及时给与客户响应。

  虽然说,关系数据库能够适应大型数据库应用的需要,但是,不能够将其简单的堆砌就直接成为数据仓库来使用。因为数据仓库主要用来处理多维数据。他存储纪录的方式跟普通的有所不同。数据仓库主要通过数组方式来存储纪录,即没有统一的规律可循,也没有统一的多维模型可循,他只恩能够购按其所属类别进行归类。虽然说传统的二维数据库不能够简单的堆砌来成为数据仓库。但是,在设计数据仓库的时候,并不是说要完全另起炉灶,而是可以利用现有的Oracle数据库系统来处理数据,从中进行信息的综合,从而构造出满足不同需要的数据仓库。

  所以,如果这个数据库是为了实现数据仓库而搭建的,则必须要采用专属服务器模式。这是Oracle数据库的强制要求。

  3、 联机事务处理系统。

  联机事务处理系统,英文简称为OLTP。在这种应用下,采用什么模式为好呢?这在业界,没有统一的标准。有的说因为联机事务处理系统使用人数比较多,应该采用共享连接服务器模式;而有的又说联机处理系统对于及时性要求比较高,而共享服务器模式可能会有比较长的等待时间,所以应该采用专用连接服务器模式。笔者是比较倾向于后面这种意见。

  联机事务处理系统,通常来说,有比较多的长事务与大事务。如用户的某几个操,必须作为一个事务处理等的观念。此时,若用户请求数大于共享服务器进程数的话,此时,就会发生排队现象。假设现在有一个共享服务器进程正在执行一个长事务,那么请求队列就需要一直等。直道这个事务完成为止。若从客户端的角度来讲,则客户请求的响应时间就加长了。所以,当用户的连接请求数比共享进程要多时,那么长事务的共享连接必将会造成共享进程的排队。事务越长,其排队的时间也就越长,用户响应的时间也就越长。如此恶性循环下去的话,很多联机事务作业都会受到不同程度的影响。所以,若联机事务处理系统统是符合两个条件(用户连接请求数大于共享进程并且其事务大部分是长事务或者大事务),则采用专用服务器连接模式比采用共享服务器连接模式效率要高。为了保障联机事务处理系统正常运行,笔者建议数据库管理员为其配置专用服务器连接模式。

  若不符合这两个条件的一个,则采用共享连接模式更加合理。

时间: 2024-10-24 18:14:53

连接模式,提高数据库性能的捷径的相关文章

连接模式:提高数据库性能的捷径

一.共享服务器模式. 共享服务器模式,也叫做多线程服务器模式.在这种模式下,Oracle数据库允许多个用户进程共享非常少的服务器进程.所以,可以同时实现用户并发访问的人数也就大大的增加.如果使用专用服务器模式,则每个用户连接数据库时,每个用户进程需要他自己的专用服务器进程.也就是说,客户端进程与服务器端进程是一一对应的. 而如果采用共享服务器模式的话,则多个用户可以共用一个服务器进程,也就是说,此时客户端进程与服务器进程是多对一的情况.这主要是通过调度程序来实现的.调度程序将多个加入数据库访问会

连接缓冲池提高数据库性能

数据|数据库|性能 如果你的ASP应用程序与数据库交互的话(我想肯定得访问数据库的,要不然用ASP干嘛?),使用连接缓冲池将大大提高数据库的性能. 建立一个到数据的连接所花费的时间和系统资源并非微不足道的. 当每个需要建立数据库连接实例的页面被访问到时,一个新的连接对象将被创建,并在该页面执行完后销毁,如果有许多人同时访问你的站点的话,访问者们将发现系统性能变得很低. 连接缓冲池维持着连接实例,以便用户可以随时使用数据库连接. 比如说,你有一个ASP页面创建了一个到SQL数据库的连接,从数据库中

如何用hash关键字提高数据库性能

普通的SQL Server应用程序要求支持一个或几个长字符串搜索.(本文中,我们称超过20个字符的字符串为长字符串.)假如前端应用程序希望允许用户提供两个字符串:你启动一个执行这两个字符串搜索任务的存储程序,然后应用两个相关列目录对搜索进行优化.在小型的表格中,你可能注意不到产生的效果.但是,如果表格包含5 000万行,它就会影响存储程序与搜索性能. 应用称为hash关键字(引用单独一个hash)或hash桶(一个hash关键字集合)的字符串目录的优秀方法可大大节省磁盘空间并提高性能. 何为ha

提高数据库性能及实用性的优化方法

数据交互复杂度与频度的提升,导致了数据库在运维.迁移和规模扩展进程中的性能问题.作为一项确保http://www.aliyun.com/zixun/aggregation/13597.html">企业IT基础部件健康运营的关键技术,数据库性能优化的实现路径和IT系统管理架构越来越密不可分. 在数据库成熟应用的时代,数据库的性能优化已经演变为一项相当严密的系统工程.作为企业IT基础设施的核心部件之一,数据库并不是孤立的系统,它与网络.操作系统.存储等硬件系统紧密相连,这种与其他IT部件的多重

SQL语句优化提高数据库性能_MsSql

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化.为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN) 2)考虑使用临时表或表变量存放中间结果 3)少用子查询 4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S

SQL语句优化提高数据库性能

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化.为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN) 2)考虑使用临时表或表变量存放中间结果 3)少用子查询 4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S

Nysql中InnoDB隔离模式对数据库性能有何影响

MySQL手册提供了一个关于MySQL支持的事务隔离模式的恰当描述 – 在这里我并不会再重复,而是聚焦到对性能的影响上. SERIALIZABLE – 这是最强的隔离模式,本质上打败了在锁管理(设置锁是很昂贵的)的条件下,多版本控制对所有选择进行锁定造成大量的开销,还有你得到的并发.这个模式仅在MySQL应用中非常特殊的情况下使用. REPEATABLE READ – 这是默认的隔离级别,通常它是相当不错的,对应用程序的便捷性来说也不错.它在第一次的时候读入所有数据 (假设使用标准的非锁读).但

通过缓存数据库结果提高PHP性能

缓存|数据|数据库|性能 众所周知,缓存数据库查询的结果可以显著缩短脚本执行时间,并最大限度地减少数据库服务器上的负载.如果要处理的数据基本上是静态的,则该技术将非常有效.这是因为对远程数据库的许多数据请求最终可以从本地缓存得到满足,从而不必连接到数据库.执行查询以及获取结果. 但当您使用的数据库与 Web 服务器位于不同的计算机上时,缓存数据库结果集通常是一个不错的方法.不过,根据您的情况确定最佳的缓存策略却是一个难题.例如,对于使用最新数据库结果集比较重要的应用程序而言,时间触发的缓存方法(

从外到内提高SQL Server数据库性能

如何提高SQL Server数据库的性能,该从哪里入手呢?笔者认为,该遵循从外到内的顺序,来改善数据库的运行性能.如下图: 第一层:网络环境. 到企业碰到数据库反映速度比较慢时,首先想到的是是否是网络环境所造成的.而不是一开始就想着如何去提高数据库的性能.这是很多数据库管理员的一个误区.因为当网络环境比较恶劣时,你就算再怎么去改善数据库性能,也是枉然. 如以前有个客户,向笔者反映数据库响应时间比较长,让笔者给他们一个提高数据库性能的解决方案.那时,笔者感到很奇怪.因为据笔者所知,这家客户数据库的