对Oracle数据库性能优化技术的研究
作者:网络转载 发布时间:[ 2012/7/17 9:42:27 ] 推荐标签:
大型关系数据库Oracle已经广泛应用于各行各业,如政府、交通、公安、电信、金融、能源等部门,并已逐渐成为企业信息化建设的重要数据库平台,但随着 Oracle 数据库规模的扩大,数据库用户人数的增加,数据库性能问题越来越突出,因此,有必要对 Oracle 数据库性能进行调整与优化, 使之在满足需求条件下,系统性能达到佳和系统开销小。
1、性能优化目标
1.1 缩短响应时间
响应时间是指从用户提交SQL语句到数据库返回结果集的第一行数据所需要的时间,缩短响应时间可以通过减小系统服务时间或用户等待时间来实现,通过使用毫秒ms来表示,通过缩短响应时间,既能减少用户请求的处理时间,又能提高系统资源利用率。
1.2 提高系统吞吐量
数据库吞吐量指在单位时间内数据库所能完成的SQL 语句事务数量,吞吐量=事务量/时间,通常用TPS(每秒钟的事务量) 来表示,提高数据库的吞吐量可以在同样的时间内处理更多的请求,即在相同的资源环境内做更加多的工作。
1.3 提高数据库多个指标的命中率
数据库指标包括数据库高速缓冲区命中率、库缓冲区命中率、软解析率等,其中,高速缓冲区命中率是常用的指标, 高速缓冲区命中率=高速缓存命中总数/数据请求总数,通常使用高速缓冲区命中率来衡量Oracle数据库的性能。
1.4 优化磁盘I/O
Oracle 数据库将数据储存在磁盘和内存中,想要往Oracle中写入和读取数据基本上都会涉及到 I/O 操作,通过对磁盘合理的进行规划,利用高速缓存技术,可以提高系统吞吐量,缩短用户响应时间,尽可能有效地利用系统物理内存而尽量避免或推迟使用磁盘 I/O 操作。
1.5 合理使用内存
在大量并发用户数下,若Oracle 内存尺寸不够会降低程序的处理效率,延缓数据库的响应时间,内存是否合理使用,一般可以从使投资得到大回报和使争用减到小这两个指标来判断,通过合理使用内存,可以大大提高系统性能。
1.6 减小磁盘排序
当用户提交的 SQL 语句含有聚合函数或者有排序时,这些排序可能在内存中进行,也可能在物理磁盘上进行。由于物理磁盘自身结构的原因,其读写速度远远慢于内存读写,因此一个优化的原则是尽可能减少物理磁盘排序操作。
2、影响Oracle性能的因素
影响Oracle数据性能的因素有很多,比如:操作系统,CPU 性能,内存分配不合理,Oracle 配置,I/O 冲突,网络速度低以及SQL使用常见错误等等都会影响数据库的性能。
1)操作系统:Oracle 数据库服务器很大程度上依赖于运行服务器的操作系统,操作系统配置不合理会直接降低Oracle性能;
2)CPU占用过高:CPU 是服务器中一个重要的资源 ,CPU 资源被其它应用占用或被某个数据库事务占用,会导致其它数据库事务运行停滞,而使数据库响应迟钝,比如:空闲时,CPU占用率超过90%,则说明Oracle服务器CPU资源不足,低效率的 SQL 语句、锁冲突、SQL 语句的重解析等原因都会引起 CPU 资源不足;
3)I/O 冲突:由于磁盘在同一时刻只能满足一个进程的需要,当多个进程同时访问同一个磁盘时,会引起读写盘冲突,进而降低整个系统的速度;
4)Oracle 配置:每一个 Oracle 实例都是由一组 Oracle 后台进程和系统全局区的一个内存区所组成的, 正确调整 Oracle 配置将会对系统性能产生重大的影响;
5)内存分配不合理:内存分配不合理将会减少 Oracle 用于存放近访问过的数据的缓冲区空间,并导致操作系统频繁进行页面或内存交换,从而导致计算机系统额外的 I/O 开销;
6)网络速度低:网络的带宽会在一定程度上影响系统的整体性能,网络速度过低会增加网络 I/O 负荷量,从而降低数据库系统的吞吐量并延长用户响应时间;
7)SQL使用常见错误:配置和数据迁移的错误,大量递归 SQL 语句的存在,长时间的全表扫描,一些数据库结构的设置不合理,重做日志文件的不合理设置,I/O 设备的不合理的规划,非标准参数的使用,执行效率很差的 SQL 语句,游标和共享池的错误使用,低效率的数据库连接。
3、性能优化优化与调整技术
3.1 调整优化数据库
1)常见的调优方法是在数据库中增加索引,索引(index)是常见的数据库对象,充分利用索引来减少表扫描的 I/O 次数,使用索引可以避免不必要的大表全表扫描,索引设置的位置要视 where 子句中索引列所应用的查询条件而定,通过索引对表的数据进行检索比起直接全表扫描所引起的I/O操作要小得多,索引可增加查询速度;
2)若某种业务的数据量增长非常快,可以使用分区表技术将数据进行分散,将不同表空间分布到不同的磁盘当中,使得硬盘之间 I/O 负载均衡,在一定程度上缓解了数据量过大引起的负面影响,并且会缩短查询时间;
3)使用存储过程完成数据库中频繁执行的应用逻辑,使代码编程与数据库的操作分离,可以降低网络传输量,提高数据请求的执行效率,执行存储过程时,用户只需要发出执行命令,而不再进行SQL语句提交,节省了系统的SQL语法分析,充分利用了SQL共享池;
4)使用Oracle优化器执行直接提交的查询SQL 语句,可以大大提高语句的执行效率;
5)使用触发器自动执行的SQL语句,可以降低网络 I/O及系统资源的消耗,如需要对所有访问数据库的程序自动实施一定规则或检查,则使用触发器可以大大提高效率。
3.2 调整优化内存
Oracle的信息存储在内存和磁盘上,由于访问内存比访问磁盘快得多,在大量并发用户数下,如果Oracle 内存尺寸不够会降低程序的处理效率,延缓数据库的响应时间,提高数据库性能需要设置合适的内存尺寸,Oracle 内存包括系统全局区 (SGA)和程序全局区 (PGA)。
3.2.1 调整SGA的大小
根据数据库运行状况重新调整SGA的大小,对每个节点修改SGA大小的方法如下:
SQL>alter system set sga_target=200m scope =both sid=’RACDB1’;
SQL>alter system set sga_target=200m scope =both sid=’RACDB2’;
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11