`
nything
  • 浏览: 144880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ORACLE性能调优遵循的基本原则

阅读更多

  任何事情都有它的源头,要解决问题,也得从源头开始,影响ORACLE性能的源头非常多,主要包括如下方面:
  
  数据库的硬件配置:CPU、内存、网络条件
  1.CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就更高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,我们要解决的问题就是要适当增加CPU的数量了,当然我们还可以将需要许多资源的进程KILL掉;
  
  2.内存:衡量机器性能的另外一个指标就是内存的多少了,在ORACLE中内存和我们在建数据库中的交换区进行数据的交换,读数据时,磁盘I/O必须等待物理I/O操作完成,在出现ORACLE的内存瓶颈时,我们第一个要考虑的是增加内存,由于I/O的响应时间是影响ORACLE性能的主要参数,我将在这方面进行详细的讲解
  
  3.网络条件:NET*SQL负责数据在网络上的来往,大量的SQL会令网络速度变慢。比如10M的网卡和100的网卡就对NET*SQL有非常明显的影响,还有交换机、集线器等等网络设备的性能对网络的影响很明显,建议在任何网络中不要试图用3个集线器来将网段互联。
  
  OS参数的设置
  下表给出了OS的参数设置及说明,DBA可以根据实际需要对这些参数进行设置
  


  用户SQL质量
  以上讲的都是硬件方面的东西,在条件有限的条件下,我们可以调整应用程序的SQL质量:
  
  1.不要进行全表扫描(Full Table Scan):全表扫描导致大量的I/O
  
  2.尽量建好和使用好索引:建索引也是有讲究的,在建索引时,也不是索引越多越好,当一个表的索引达到4个以上时,ORACLE的性能可能还是改善不了,因为OLTP系统每表超过5个索引即会降低性能,而且在一个sql 中, Oracle 从不能使用超过 5个索引;当我们用到GROUP BY和ORDER BY时,ORACLE就会自动对数据进行排序,而ORACLE在INIT.ORA中决定了sort_area_size区的大小,当排序不能在我们给定的排序区完成时,ORACLE就会在磁盘中进行排序,也就是我们讲的临时表空间中排序, 过多的磁盘排序将会令 free buffer waits 的值变高,而这个区间并不只是用于排序的,对于开发人员我提出如下忠告:
  
  1)、select,update,delete 语句中的子查询应当有规律地查找少于20%的表行.如果一个语句查找的行数超过总行数的20%,它将不能通过使用索引获得性能上的提高.   
  
  2)、索引可能产生碎片,因为记录从表中删除时,相应也从表的索引中删除.表释放的空间可以再用,而索引释放的空间却不能再用.频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片,影响性能.在许可的条件下,也可以阶段性地truncate表,truncate命令删除表中所有记录,也删除索引碎片.
  
  3)、在使用索引时一定要按索引对应字段的顺序进行引用。
  
  4)、用(+)比用NOT IN更有效率。
  
  降低ORACLE的竞争:
  先讲几个ORACLE的几个参数,这几个参数关系到ORACLE的竞争:
  1)、freelists 和 freelist 组:他们负责ORACLE的处理表和索引的空间管理;
  
  2)、pctfree 及 pctused:该参数决定了freelists 和 freelist 组的行为,pctfree 和pctused 参数的唯一目的就是为了控制块如何在 freelists 中进出
  
  设置好pctfree 及 pctused对块在freelists的移走和读取很重要。
  
  其他参数的设置
  1)、包括SGA区(系统全局区):系统全局区(SGA)是一个分配给Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段。
  
  主要包括数据库高速缓存(the database buffer cache),
  
  重演日志缓存(the redo log buffer),
  
  共享池(the shared pool),
  
  数据字典缓存(the data dictionary cache)以及其它各方面的信息
  
  2)、db_block_buffers(数据高速缓冲区)访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。
  
  3)、share_pool_size (SQL共享缓冲池):该参数是库高速缓存和数据字典的高速缓存。
  
  4)、Log_buffer (重演日志缓冲区)
  
  5)、sort_area_size(排序区)
  
  6)、processes (同时连接的进程数)
  
  7)、db_block_size (数据库块大小):Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。
  
  8)、open_links (同时打开的链接数)
  
  9)、dml_locks
  
  10)、open_cursors (打开光标数)
  
  11)、dbwr_io_slxdyes (后台写进程数)

分享到:
评论

相关推荐

    Oracle性能调优

    Oracle性能调优是一个涵盖广泛且深入的领域,涉及到数据库的多个层面,包括SQL优化、执行计划分析以及各种其他的优化策略和技术。在Oracle系统中,性能优化的目标是提高查询和事务处理的速度,减少资源消耗,从而...

    oracle数据库调优配置

    在进行内存分配时,需要遵循以下原则: - 总内存分配(SGA_MAX_SIZE + PGA_AGGREGATE_TARGET + 操作系统开销)应不超过系统总内存的75%,留出足够的空间给操作系统和其他进程。 - 在32位系统上,SGA_MAX_SIZE + PGA_...

    DBA应遵循的Oracle调优原则.doc

    本文将探讨DBA在Oracle调优过程中应遵循的基本原则,包括外部调整、行重排序、SQL调整、排序优化以及竞争调整。 首先,**外部调整**涉及到对运行Oracle数据库的服务器进行优化。这包括对CPU、内存和网络资源的评估...

    oracle 数据库性能调优技术 1 中文

    ### Oracle数据库性能调优技术——索引调优 #### 一、概述 随着信息技术的快速发展,数据库在各行各业的应用越来越广泛,对于高性能的需求也随之增加。**数据库性能调优**是一项复杂而又重要的任务,它旨在通过一...

    DBA 应遵循的 Oracle 调优原则

    ### DBA 应遵循的 Oracle 调优原则 在数据库管理领域,Oracle 数据库以其高性能、可扩展性和可靠性而闻名。为了确保Oracle数据库能够高效运行,DBA(数据库管理员)需要掌握一系列优化技巧和原则。本文将详细介绍...

    DBA应遵循的Oracle调优原则

    遵循上述原则,结合实际情况进行有针对性的优化,可以显著改善Oracle数据库的性能,提升整体系统的运行效率。在实际工作中,DBA还应不断学习新的调优技术,以适应Oracle数据库的持续发展和变化。

    ORACLE11G性能分析及优化对策

    性能问题的定位通常遵循以下步骤: - **SQL级别**:首先检查具体的SQL语句是否存在性能问题,如执行计划、10053/10046事件等。 - **会话级别**:如果问题无法在SQL级别定位,则转到会话级别进行更深层次的分析,涉及...

    oracle_tunning培训文档

    通过以上内容,我们可以看到,这份Oracle性能调优培训文档不仅为数据库管理员和技术人员提供了全面的性能调优知识,还强调了在实际工作中遵循版权法的重要性,以及在使用这些技术知识时需要注意的法律和道德问题。...

    数据库原理和设计(oracle基础和调优).

    Oracle数据库是关系型数据库管理系统的一个代表,它遵循ACID(原子性、一致性、隔离性和持久性)原则,确保事务的正确执行。在Oracle中,数据被组织在表空间中,表空间由多个数据文件组成,这些文件存储在操作系统...

    oracle 数据库sql调优.doc

    SQL优化遵循的一些基本原则包括: - 消除不必要的大表全表搜索:避免对大表进行全表扫描,尽可能利用索引来定位数据。 - 最优的索引使用:正确地创建和使用索引可以显著提高查询速度,但过多的索引可能会影响插入和...

    MySQL性能调优与架构设计.pdf

    ### MySQL性能调优与架构设计 #### 一、MySQL简介及发展历程 MySQL是一款由MySQL AB公司(现已被Oracle收购)自主开发的关系型数据库管理系统。它以其高性能、稳定性以及开源特性,在短时间内迅速成为IT行业中广受...

    oracle ocm sql调优教程

    开发者应遵循的一些基本原则包括:尽量减少子查询,使用JOIN代替子查询,避免在WHERE子句中使用不等式和函数。 "Les05_opt.ppt"可能涵盖了SQL优化器的工作原理。Oracle数据库使用CBO(Cost-Based Optimizer)来选择...

    oracle性能设计及优化

    但需要注意,参数调整应遵循“最小干预”原则,避免不必要的改动导致的负面影响。 八、数据库版本升级与补丁应用 随着Oracle版本的更新,新的性能优化特性和修复常常包含其中。定期评估升级到新版本的必要性,及时...

    Oracle性能优化

    Oracle性能优化是数据库管理员和开发人员关注的重要领域,旨在提高Oracle数据库系统的运行效率,减少响应时间,提升系统吞吐量,以及改善用户满意度。Oracle SQL性能调优是这个过程的关键部分,因为它涉及到优化SQL...

    oracle性能优化学习心得

    Oracle性能优化是一个复杂而精细的过程,它涉及到数据库的多个层面,包括硬件配置、数据库设计、SQL语句优化以及系统参数调整。以下是对标题和描述中所述知识点的详细说明: 一、优化总原则 1. 系统使用情况的监控...

    提升百倍效率-Oracle数据库性能

    2. 规范化设计:遵循数据库规范化原则,减少数据冗余,降低数据不一致性风险。 3. 索引设计:针对高频率查询的列建立索引,提高查询速度。 六、Oracle新特性应用 1. In-Memory Option:利用内存中的数据处理,大幅...

    软件工程中的网络优化与性能调优.pptx

    - **原则**:遵循先分析再优化的原则,避免盲目优化。 - **技术**: - **缓存优化**:合理使用缓存减少数据库访问频率。 - **算法优化**:采用更高效的算法结构提高程序运行效率。 - **资源重用**:减少资源...

Global site tag (gtag.js) - Google Analytics