`

Oracle性能调优——Oracle性能调优原则(一)

阅读更多
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可以根据实际需要对这些参数进行设置

  内核参数名

  说明

  bufpages

  对buffer空间不按静态分配,采用动态分配,使bufpages值随nbuf一起对buffer空间进行动态分配。

  create_fastlinks

  对HFS文件系统允许快速符号链接

  dbc_max_pct

  加大最大动态buffer空间所占物理内存的百分比,以满足应用系统的读写命中率的需要。

  dbc_min_pct

  设置最小动态buffer空间所占物理内存的百分比

  desfree

  提高开始交换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见的系统崩溃(Crash)。

  fs_async

  允许进行磁盘异步操作,提高CPU和磁盘的利用率

  lotsfree

  提高系统解除换页操作的空闲内存的上限值,保证应用程序有足够的可用内存空间。

  maxdsiz

  针对系统数据量大的特点,加大最大数据段的大小,保证应用的需要。(32位)

  maxdsiz_64bit

  maximum process data segment size for 64_bit

  Maxssiz

  加大最大堆栈段的大小。(32_bit)

  maxssiz_64bit

  加大最大堆栈段的大小。(64_bit)

  Maxtsiz

  提高最大代码段大小,满足应用要求

  maxtsiz_64bit

  原值过大,应调小

  Minfree

  提高停止交换操作的自由内存的上限

  Shmem

  允许进行内存共享,以提高内存的利用率

  Shmmax

  设置最大共享内存段的大小,完全满足目前的需要

  Timeslice

  由于系统的瓶颈主要反映在磁盘I/O上,因此 降低时间片的大小,一方面可避免因磁盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一方面减少了进程的阻塞量。

  unlockable_mem

  提高了不可锁内存的大小,使可用于换页和交换的内存空间扩大,用以满足系统对内存管理的要求。
用户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_slaves (后台写进程数)
分享到:
评论

相关推荐

    Oracle 性能调优最佳攻略(OCP版)

    OWI(Oracle Wait Interface)是性能调优中的一个核心概念,它基于等待事件进行调优。通过分析等待事件的数量和总等待时间,可以直接定位并消除系统性能瓶颈,例如I/O、锁、 latch、后台进程活动和网络延迟等问题。...

    性能调优——Oracle索引技术的应用与剖析

    在数据库管理中,性能调优是一项至关重要的任务,尤其对于处理大量数据的系统来说更是如此。Oracle数据库作为业界广泛使用的数据库管理系统,其索引技术是优化查询性能的关键手段。在这个具体的案例中,政府职能部门...

    ORACLE数据库性能调优研究——以天津东方海陆公司为例.pdf

    综上,Oracle数据库性能调优是一个涉及多方面、需要持续监控和调整的过程。通过科学的方法和适当的工具,可以显著提升数据库性能,保证企业的信息化系统平稳高效运行。对于像天津东方海陆这样的企业,实施有效的...

    oracle性能调优.doc

    本文主要关注Oracle性能优化中的关键领域——SGA(System Global Area)的调优,尤其是Shared Pool和Buffer Cache的优化。 **1. Shared Pool调优** Shared Pool是Oracle SGA的一部分,它主要负责存储解析的SQL语句...

    数据库性能调优--原理与技术2.pdf

    通过以上内容可以看出,《数据库性能调优——原理与技术2》是一本全面覆盖Oracle数据库性能优化各个方面的专业指南。无论是初学者还是经验丰富的DBA都能从中获得有价值的信息和技巧,帮助他们在实际工作中更好地应对...

    数据库性能调优--原理与技术1.pdf

    《数据库性能调优——原理与技术1.pdf》主要针对Oracle数据库,深入探讨了如何通过理解和应用一系列优化策略和技术来提高数据库性能。 #### 二、数据库性能的重要性 数据库性能的好坏直接关系到企业业务的高效运行...

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

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

    Oracle数据库性能调优务实课件1-5

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其性能调优是DBA(数据库管理员)和系统管理员的重要工作内容。本课程围绕"Oracle数据库性能调优务实课件1-5"展开,旨在深入理解并实践Oracle数据库的性能...

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

    ### Oracle数据库性能调优技术——深入理解嵌套循环执行计划 #### 一、概述 本文是关于Oracle数据库性能调优技术系列文章的第三篇。在前一篇中,我们详细探讨了单表执行计划的重要性及其对多表执行计划理解的基础...

    Oracle MMA高可用架构及性能调优

    Oracle 性能调优是一项复杂但至关重要的任务,旨在提高数据库系统的响应时间和吞吐量。这通常涉及以下几个方面: - **SQL 语句优化**: - 使用执行计划分析工具检查 SQL 查询效率。 - 优化索引结构,减少查询时间...

    数据库性能调优中的问题和对策分析——以ORACLE数据库为例.pdf

    数据库性能调优是一个关键的领域,尤其在当今信息化社会,数据库作为数据管理和共享的核心工具,其性能直接影响到整个系统的运行效率和用户体验。数据库性能调优主要包括对数据库系统的全面分析,识别可能导致性能...

    数据库性能调优技术--索引调优

    ### 数据库性能调优技术——索引调优 #### 一、概述 随着信息技术的快速发展,数据库在各行各业的应用越来越广泛,对于数据处理速度和效率的要求也越来越高。数据库性能调优是一项涉及多方面知识的综合性技能,它...

    Oracle调优工具使用研究.pdf

    总的来说,Oracle数据库调优是一个综合的过程,需要DBA具备深厚的数据库知识和实践经验,同时充分利用Oracle提供的各种工具,以实现数据库的最佳性能。通过对AWR和MYTUN等工具的深入理解和应用,DBA可以更有效地管理...

    Oracle内存参数调优技术详解

    Oracle 内存参数调优技术是指在 Oracle 实例中调整内存参数以提高数据库性能的技术。 Oracle 实例由内存结构和进程结构两部分组成。内存结构包括 SGA(系统全局区)和 PGA(程序全局区)两部分,而进程结构包括...

    数据库性能调优原理与技术

    本书特别关注了三大主流数据库产品——DB2、Oracle和SQL Server,通过丰富的实证案例,展示了如何有效地进行数据库性能调优。 首先,书中详细阐述了数据库性能的基础理论。这包括数据存储和检索的原理,如B树索引、...

    Oracle 实用教材———web版

    "Oracle 实用教材———web版"显然是一本专为初学者设计的教程,旨在通过Web方式进行Oracle 9i数据库的学习和实践。Oracle 9i是Oracle公司推出的第九个主要版本,它在功能上进行了许多优化和增强,尤其是在互联网...

    《Oracle DBA手记——数据库诊断案例与性能优化实践》第一章 to be continued

    ├─第一篇 DBA工作手记 │ 01.Eygle的DBA工作手记 │ 02.Yangtingkun的DBA工作手记 ... 02.Oracle数据库性能与统计信息 03.聚簇因子、柱状图与执行计划 04.表碎片及分页查询优化 05.一次排序的调整与优化

    学习笔记——JVM性能调优之 jstat(csdn)————程序.pdf

    JVM性能调优是Java开发中至关重要的一环,它直接影响应用程序的运行效率和稳定性。jstat(JVM Statistics Monitoring Tool)是Oracle JDK提供的一款强大的命令行工具,用于实时监控Java虚拟机的各种运行状态,包括...

Global site tag (gtag.js) - Google Analytics