Oracle数据库系统调优方法 |
Oracle 数据库 宽泛 利用在社会的各个领域,特殊是在Client/Server模式的 利用,然而 利用开发者一般碰到整个系统的性能随着数据量的增大显着 降落的问题,为了解决这个问题,从以下几个方面:数据库服务器、网络I/O、 利用程序等对整个系统加以调整, 充足 施展Oracle的 效力, 普及整个系统的性能 。 1 调整数据库服务器的性能 Oracle数据库服务器是整个系统的核心,它的性能 高下直接影响整个系统的性能,为了调整Oracle数据库服务器的性能,主要从以下几个方面考量: 1.1 调整 操作系统以 合适Oracle数据库服务器运行 Oracle数据库服务器很大程度上依赖于运行服务器的操作系统,假如操作系统不能提供最好性能,那么无论如何调整,Oracle数据库服务器也 无奈 施展其应有的性能 。 1.1.1 为Oracle数据库服务器规划系统资源 据已有计算机可用资源, 规划 调配给Oracle服务器资源 准则是:尽可能使Oracle服务器 使用资源最大化,特殊在Client/Server中尽量让服务器上全部资源都来运行Oracle服务 。 1.1.2 调整计算机系统中的内存配置 多数操作系统都用虚存来 模仿计算机上更大的内存,它实际上是硬盘上的 定然的磁盘空间 。当实际的内存空间不能满足 利用软件的要求时,操作系统就将用这 部分的磁盘空间对内存中的信息进行页面替换,这将引起大量的磁盘I/O操作,使整个服务器的性能 降落 。为了幸免过多地 使用虚存,应加大计算机的内存 。 1.1.3 为Oracle数据库服务器设置操作系统 历程优先级 不要在操作系统中调整Oracle 历程的优先级,由于在Oracle数据库系统中,全部的 后盾和前台数据库服务器 历程执行的是 等同主要的工作,需要 等同的优先级 。所以在安装时,让全部的数据库服务器 历程都 使用缺省的优先级运行 。 1.2 调整内存 调配 Oracle数据库服务器保留3个 根本的内存高速缓存,分别对应3种不同类型的数据:库高速缓存,字典高速缓存和缓冲区高速缓存 。库高速缓存和字典高速缓存一同组成共享池,共享池再外加缓冲区高速缓存便组成了系统全程区(SGA) 。SGA是对数据库数据进行 快捷 拜访的一个系统全程区,若SGA 本身需要频繁地进行 开释、 调配,则不能达到 快捷 拜访数据的 目标, 因此应把SGA放在主存中,不要放在 虚构内存中 。内存的调整主要是指调整组成SGA的内存 构造的大小来 普及系统性能,由于Oracle数据库服务器的内存 构造需要与 利用紧密 有关,所以内存 构造的调整应在磁盘I/O调整之前进行 。 1.2.1 库缓冲区的调整 库缓冲区中包括私用和共享SQL和PL/SQL区,通过 比较库缓冲区的命中率决定它的大小 。要调整库缓冲区,必须首先了解该库缓冲区的 运动状况,库缓冲区的 运动统计信息保留在动态性能表v$librarycache数据字典中,可通过 查问该表来了解其 运动状况,以决定如何调整 。 1.2.2 数据字典缓冲区的调整 数据字典缓冲区包括了有关数据库的 构造、消费者、实体信息 。数据字典的命中率,对系统性能影响极大 。数据字典缓冲区的 使用状况记录在动态性能表v$librarycache中,可通过 查问该表来了解其 运动状况,以决定如何调整 。 1.2.3 缓冲区高速缓存的调整 消费者 历程所存取的全部数据都是 通过缓冲区高速缓存来存取,所以该 部分的命中率,对性能至关主要 。缓冲区高速缓存的 使用状况记录在动态性能表v$sysstat中,可通过 查问该表来了解其 运动状况,以决定如何调整 。 2 调整 Client/Server 模式下的网络 I/O Client/Server环境中的 利用 解决是 分布在客户 利用程序和数据库服务程序中间的 。在 Client/Server环境中Client与Server中间的网络I/O是整个系统性能 普及的瓶颈,一个客户 利用程序引起的网络I/O越少, 利用及整个系统的性能越好 。削减网络I/O的最主要的一条 准则:将 利用逻辑集中在数据库服务器中 。 2.1 使用Oracle数据库的 完全 束缚性 当为 利用建表时, 该当为一些有特殊要求的数据外加适当的 完全性 束缚,这样就能实现由数据库 本身而不是 利用程序来 束缚数据 相符 定然的条件 。数据库服务器端的 完全 束缚的执行操作是在比SQL语句级别更低的系统机制上优化,它与客户端无关,只在服务器中运行,不需在Client 端和Server端中间传递SQL语句,有效地减轻网络I/O 累赘 。 2.2 使用数据库触发器 完全 束缚性不得不实现一些较 方便的数据 束缚条件,对一些较复杂的事物 解决 规定就无能为力,这时最好不要在 利用程序中 施行复杂的程序操纵,而是 该当采纳数据库触发器来 施行复杂的事物 规定 。数据库触发器能实现由数据库 本身,而不是 利用程序,来 束缚数据 相符复杂的事物 解决 规定,而且方便 缔造,便于治理,幸免大量的网络I/O 。 2.3 使用存储过程、存储函数和包 Oracle的存储过程和存储函数是命名的能 实现 定然 性能而且存储在Server端的PL/SQL的 集中 。包是一种把有关的过程和函数组织封装成一个数据库程序单元的 步骤 。它们 有关于 利用程序的过程、函数而言,把SQL命令存储在Server端 。 使用存储过程和存储函数, 利用程序 毋庸再包括多个网络操作的SQL语句去执行数据库服务器操作,而是简 单调用存储过程和存储函数,在网络上传输的只不过调用过程的名字和输出 后果,这样就可削减大量的网络I/O 。 3 利用程序的调整 3.1 SQL语句的优化 SQL语句的执行速度, 可以受众多因素的影响而 变迁 。但主要的影响因素是:驱动表、执行操作的先后顺序和索引的 使用 。 可以由众多不同的 步骤 直接地转变这些因素,以达到最优的执行速度 。这里主要探讨当对多个表进行衔接 查问时应遵照的优化 准则: 3.2 构建和 使用视图、索引 利用视图 可以将基表中的列或 前进行淘汰、 潜藏一 部分数据,而且 可以将 波及到多个表的复杂 查问以视图的 模式给出,使 利用程序开发简洁 快捷 。利用索引 可以 普及 查问性能,削减磁盘 I/O,优化对数据表的 查问,加快SQL语句的执行 。但任何时候 构建索引都能 普及性能,何时 构建索引 该当遵照以下 准则:该表常用来在索引列上 查问,该表不常更新、插入、删除等操作, 查问出来的 后果记录数应操纵在原表的2%~4% 。 3.3 使用 Oracle 的数组接口 当一个客户 利用程序插入一行或用一个 查问来向服务器 申请某行时,不是发送 存在单个行的网络包,而是采纳数组 解决,即把要插入的多个行或检索出的多个行缓冲在数组中, 而后通过很少的几个包就可在网上 传递这些数组 。例如,一个给定的Select语句返回2000行数据,每行 均匀大小为40个字节,数据包的大小为4kB,而数组大小参数(arraysize)设置为20 ,则需从服务器发送100个数据包到客户机 。假如 方便地把(arraysize)设置为2000,那么同样的操作 惟独要 传递 20个数据包 。这样就削减了网络的传输量, 普及了全部 利用的性能 。 4 总结 我们在开发 利用程序时,遵照上述的 步骤和 准则,对系统进行调整,收到了令人中意的 动机 。然而 该当指出,由于客户机、网络、服务器这3个 彼此依存的组成 部分都必须调整和同步 威力产生最佳的性能, 因此还应依据系统的具体状况,具体 综合和调整 。 |