Oracle性能调优原则
- 格式:doc
- 大小:17.00 KB
- 文档页数:4
Oracle性能调整(一)——基本参数调整一、操作系统参数交换区是Oracle的一项基本的要求。
可以根据Oracle的发行要求来确定。
一般交换区大小的要求是该服务器内存的2倍至4倍之间,建议是内存的4倍Note2:oracle 文件设置当服务器平台已完成操作系统的安装后,就应该开始认真的考虑下面的问题:A、是否采用裸设备实际应用的生产系统基本都是采用裸设备,使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。
B、安装点的考虑Oracle的安装点就是指数据文件、日志文件和控制文件的安置路径,为了使系统在以后运行性能达到优化,建议将数据文件、日志文件和控制文件的安置路径与数据库系统存放在不同的路径上。
最好将数据文件、日志文件和控制文件分别存放在不同的路径。
C、SYSTEM表空间对应数据文件在自定义安装会话中,建议你根据需要设置system表空间所对应的数据文件的大小。
一般要设置比默认值的2倍。
该数据文件的大小最好是在300MB至500MB间。
因为数据文件太小不利于系统的运行。
D、临时表空间对应的数据文件临时表空间对应的数据文件可以根据将来系统存放的应用的处理情况来定。
比如系统将来可能要经常进程排序处理,则需要设置较大的临时表空间,也可能需要再建立新的临时表空间。
这里建议临时表空间的数据文件在100MB至300MB左右。
E、回滚段表空间对应的数据文件回滚表空间都是系统管理,初始值也是根据系统事务量预估计的值,实际到运行阶段如果系统常出现ORA-01555错误的时候,可能就需要增加回滚表空间的大小。
F、日志文件的大小日志文件的大小对于Oracle系统的运行也是相当重要。
默认值是太小。
实际根据事务繁忙预估计日志大小,没有固定的具体值范围,建议重做日志切换时间不能过短也不能过长,一般在20-40分钟左右。
该参数可以在系统运行期间根据数据库系统日志切换时间重新调整,控制文件的大小。
G、数据库块的大小如果你的应用系统是OLTP的话,可以采用较小的数据库块。
Oracle语句优化53个规则详解1、选用适合的ORACLE优化器ORACLE的优化器共有3种:1)RULE(基于规则)2)COST(基于成本)3)CHOOSE(选择性)设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS。
你当然也可以在SQL句级或是会话(session)级对其进行覆盖。
为了使用基于成本的优化器(CBO,Cost-Based Optimizer),你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性。
如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器模式将和是否运行过analyze命令有关。
如果table已经被analyze过,优化器模式将自动成为CBO,反之,数据库将采用RULE形式的优化器。
在缺省情况下,ORACLE采用CHOOSE优化器,为了避免那些不必要的全表扫描(full table scan),你必须尽量避免使用CHOOSE优化器,而直接采用基于规则或者基于成本的优化器。
2、访问Table的方式ORACLE 采用两种访问表中记录的方式:1)全表扫描全表扫描就是顺序地访问表中每条记录。
ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。
2)通过ROWID访问表你可以采用基于ROWID的访问方式情况,提高访问表的效率,ROWID包含了表中记录的物理位置信息,ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。
通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
3、共享SQL语句为了不重复解析相同的SQL语句,在第一次解析之后,ORACLE将SQL语句存放在内存中。
这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。
Oracle数据库优化与调优Oracle是目前市场上应用最广泛的数据库管理系统之一,而随着业务量的不断增长和数据量的持续膨胀,如何优化和调优Oracle数据库的性能已成为企业数据管理领域必须面对的问题。
本文将就Oracle数据库的优化调优进行详细阐述,帮助读者更好地了解Oracle数据库优化与调优的方法和技巧。
一、Oracle数据库优化1.硬件优化硬件优化是Oracle数据库优化的重要方面,可以通过增加机器内存、扩展硬盘空间、提高网络速度等方式来优化硬件资源。
Oracle数据库安装时需要设置多个参数,包括内存参数、网络参数和磁盘IO参数等。
根据具体的硬件配置和业务需求,可以适当调整这些参数。
2.数据库结构优化数据库结构优化可以提高Oracle数据库的查询效率。
常见的数据库结构优化包括创建索引、分区表、视图和物化视图等。
其中,索引可以加速查询,分区表可以减少查询时间,视图和物化视图可以避免重复计算,从而提高Oracle数据库的性能。
3.SQL语句优化SQL语句优化是优化Oracle数据库性能的关键。
在设计SQL语句时,应该尽量避免使用不必要的关联查询和子查询,同时要避免使用通配符查询。
可以使用SQL Trace和Explain Plan等工具来评估SQL语句的性能,并根据评估结果进行调整。
4.Oracle性能监测和故障诊断Oracle性能监测和故障诊断是保障Oracle数据库高性能运行的保障。
Oracle Enterprise Manager和Grid Control是监测、管理和诊断Oracle 数据库的常见工具,可以监测各种Oracle数据库的性能指标、诊断故障和进行自动管理。
5.数据库升级和迁移随着业务的不断扩展,数据量也会不断增加,因此数据库升级和迁移已成为Oracle数据库运维中不可或缺的环节。
在进行数据库升级和迁移时,需要先做好充分的准备工作,包括备份数据、检查硬件和网络环境等。
同时,也需要在升级和迁移过程中,严格遵循相关安全规范,确保数据的完整性和可靠性。
oracle 调优参数【实用版】目录1.Oracle 数据库调优的重要性2.Oracle 数据库调优的方法3.Oracle 数据库性能调优工具4.Oracle 数据库调优的实践经验5.Oracle 数据库性能调优的解决方案正文Oracle 数据库调优的重要性Oracle 数据库在社会的各个领域有着广泛的应用,特别是在client/server 模式的应用中。
然而,随着数据量的不断增大,应用开发者往往会遇到整个系统的性能显著下降的问题。
为了解决这个问题,我们需要从数据库服务器、网络 I/O、应用程序等各个方面对整个系统进行调整,以充分发挥 Oracle 的效能。
Oracle 数据库调优的方法Oracle 数据库调优主要包括以下几个方面:1.数据库服务器:我们需要对数据库服务器进行优化,以提高其处理能力。
这包括对数据库实例的配置进行调整,以便更好地分配系统资源,以及对数据库的物理存储结构进行优化,以提高存储效率。
2.网络I/O:我们需要对网络I/O进行优化,以提高数据的传输速度。
这包括对网络协议进行调整,以提高网络吞吐量,以及对网络带宽进行优化,以提高网络的传输能力。
3.应用程序:我们需要对应用程序进行优化,以提高其执行效率。
这包括对程序代码进行优化,以提高其执行速度,以及对程序的运行环境进行优化,以提高其运行效率。
Oracle 数据库性能调优工具Oracle 数据库性能调优工具主要包括以下几个:1.AWR(Automatic Workload Repository):AWR 是 Oracle 数据库性能调优的一个核心工具,它可以自动收集数据库的工作负载信息,并提供一系列的性能指标,以帮助我们分析数据库的性能问题。
2.ASH(Automatic Storage Management):ASH 是 Oracle 数据库的一个存储管理工具,它可以帮助我们优化数据库的物理存储结构,以提高数据库的性能。
3.V 视图:V 视图是 Oracle 数据库性能调优的一个辅助工具,它可以帮助我们查看数据库的性能统计信息,以帮助我们分析数据库的性能问题。
Oracle 数据库性能调整和优化涉及到那些问题数据库应用的类型是复杂的,有大量用户同时更新数据库的联机事务处理应用(如银行储蓄系统)、对海量数据进行查询并生成报告的数据仓库应用(如分析商场销售数据的决策支持系统)、在互联网上大量用户同时查询和更新数据的联机事务处理应用(如网上银行应用)等等。
为了满足与适应各种各样的商业应用,使各种不同的应用在不同的环境下都能达到最优的状态,Oracle 数据库系统提供了大量的非常灵活的可调节内容。
为了保证Oracle数据库运行在最佳的性能状态下,在信息系统开发之前就应该考虑数据库的优化策略。
优化策略一般包括服务器操作系统参数调整、数据库参数调整、网络性能调整、应用程序SQL语句分析及设计等几个方面,其中应用程序的分析与设计是在信息系统开发之前完成的。
分析评价Oracle数据库性能主要有数据库吞吐量、数据库用户响应时间两项指标。
数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即“数据库用户响应时间=系统服务时间+用户等待时间”。
因此,获得满意的用户响应时间有两个途径:一是减少系统服务时间,即提高数据库的吞吐量;二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率。
数据库性能优化包括如下几个部分:∙调整数据结构的设计这一部分在开发信息系统之前完成,程序员需要考虑是否使用Oracle数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。
∙调整应用程序结构设计这一部分也是在开发信息系统之前完成的。
程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。
不同的应用程序体系结构要求的数据库资源是不同的。
∙调整数据库SQL语句应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL 语句的执行效率最终决定了Oracle数据库的性能。
Oracle公司推荐使用Oracle语句优化器(Oracle Optimizer)和行锁管理器(Row-Level Manager)来调整优化SQL语句。
Oracle性能优化学习心得一,优化总的原则1,查看系统的使用情况2,查看SGA分配情况,结合系统具体情况进行分析。
3,表的设计分析4,SQL语句分析实施要则1,查看系统的使用情况,CPU占用,内存,I/O读取等Oracle10G提供的Oracle Enterprise Manager图形化工具中的ADDM 和SQL Tuning Advisor等可以方便的查看系统状况2,OPS上负载均衡,不同查询用不同Instance3,提供脚本查看SGA使用情况4,分析SQL执行情况(trace及其他工具)实施细节1,外部调整:我们应该记住Oracle并不是单独运行的。
因此我们将查看一下通过调整Oracle服务器以得到高的性能。
2,Row re-sequencing以减少磁盘I/O:我们应该懂得Oracle调优最重要的目标是减少I/O。
3,Oracle SQL调整。
Oracle SQL调整是Oracle调整中最重要的领域之一,只要通过一些简单的SQL调优规则就可以大幅度地提升SQL语句的性能,这是一点都不奇怪的。
4,调整Oracle排序:排序对于Oracle性能也是有很大影响的。
5,调整Oracle的竞争:表和索引的参数设置对于UPDATE和INSERT的性能有很大的影响。
二,调优分类:对Oracle数据库进行性能调整时,应当按照一定的顺序进行,因为系统在前面步骤中进行的调整可以避免后面的一些不必要调整或者代价很大的调整。
一般来说可以从两个阶段入手:1、设计阶段:对其逻辑结构和物理结构进行优化设计,使之在满足需求条件的情况下,系统性能达到最佳,系统开销达到最小;2、数据库运行阶段:采取操作系统级、数据库级的一些优化措施来使系统性能最佳;㈠设计阶段:A,数据库设计优化较多修改较少查询的数据和较多查询较少修改的数据分别对待。
a,结构优化1,根据应用程序进行数据库设计。
即应用程序采用的是传统的C/S两层体系结构,还是B/W/D三层体系结构。
ORACLESQL性能优化1.使用正确的查询语句:使用正确的查询语句是提高SQL性能的关键。
确定要返回的结果集,只选择所需的列,使用合适的过滤条件和连接条件来减少需要检索的数据量。
2.创建适当的索引:索引是提高查询性能的重要因素之一、为经常使用的列创建索引可以加快查询速度。
但是,过多或不必要的索引可能会降低性能。
因此,只为那些经常用于查询和过滤的列创建索引。
3. 根据数据分布选择合适的索引类型:Oracle提供了多种类型的索引,包括B-tree索引、位图索引和哈希索引。
根据数据分布选择合适的索引类型可以提高查询性能。
4. 使用合适的查询优化技术:Oracle提供了多种查询优化技术,如联接、子查询、视图和分区等。
选择合适的查询优化技术可以提高查询性能。
5. 避免重复查询:在同一查询中避免多次访问相同的表和数据。
可以使用临时表或Oracle的WITH子句来保存查询结果,以便以后多次使用。
6.使用绑定变量:绑定变量可以减少SQL执行时间并减少资源的消耗。
使用绑定变量可以将SQL缓存起来以供以后使用,避免重复解析查询。
7.使用合适的数据库连接方式:选择合适的数据库连接方式可以提高查询性能。
使用连接池可以避免频繁的连接和断开操作,减少资源消耗。
8. 监控和调优SQL语句:使用Oracle提供的监控工具来监控和调优SQL语句的执行。
根据监控结果进行优化,从而提高SQL查询性能。
9.确保数据库统计信息的及时更新:数据库统计信息对于优化查询非常重要。
及时更新统计信息可以帮助优化器选择合适的执行计划,提高查询性能。
10.使用合适的硬件和存储配置:选择合适的硬件和存储配置可以提高查询性能。
增加内存和磁盘的速度和容量可以减少IO开销,加快查询速度。
总结起来,Oracle SQL性能优化需要综合考虑查询语句、索引、查询优化技术、数据库连接方式、绑定变量、监控和调优等因素。
通过合理地应用这些技术和方法,可以显著提高SQL查询的执行速度和效率。
Oracle 数据库性能调优的一些经验与体会[摘要] 本文主要介绍在HP8500服务器上实现Oracle 9i数据库管理工作中性能调优的方法与系统参数调整的原则。
[关键字] 共享池,缓存,栓锁,重写日志,回滚段,临时表空间,检查点,I/O从事数据库系统维护工作已经有一段时间了,多少有一些工作工作经验,想与大家作个交流。
数据库性能调节与优化是DBA(数据库管理员)的一项重要工作。
DBA如何才能把这项工作做好哪?首先,购买功能和性能更强的硬件是性能问题的一种解决办法,我们把Oracle 数据库安装运行于HP8500服务器,应用服务器采用HP ML570。
但是,硬件往往非常昂贵,且随着软件的升级和复杂化,数据的增加,再好的硬件也会过时。
DBA 必须最好地利用现有的硬件资源,想其他办法提高系统的性能。
一.O racle 数据库性能调优方法Oracle 给出了DBA 应当采用的性能调节的5大步骤。
一般而言,在所有的情况下,都应从第1步开始,以避免在解决问题的过程中又产生新的问题。
在此同时,也应注意到,随着步骤的深入,调节所影响的范围和深度也在加大。
下面是调节的步骤:1. 优化设计:调节系统结构设计和应用系统的设计。
2. 优化应用程序:在很多情况下,写的很差的查询语句是性能问题的根源。
DBA 应当在鼓励开发人员调整SQL 查询语句的性能。
(前两个步骤通常是系统体系结构设计者和应用程序开发人员的责任;但是,DBA也可能参与应用程序的优化。
)3.优化内存结构。
在应用程序调节后,恰当的配置和调节内存结构会对应用和数据库有极大的性能影响。
Oracle 应当有足够的空间分配给SQL/PLSQL、数据字典缓冲区、数据缓冲区、重做日志缓冲区以获取高的性能。
这些体现在以下几个方面:A.对已存在于内存中的数据库数据更快的查询。
B.减少RDBMS 对SQL 不必要的分析。
C.消除操作系统的页面交换,特别是将SGA交换到磁盘。
4. 优化I/O:Oracle 设计成防止I/O 负面地影响应用系统的性能。
Oracle性能究极优化(Oracle性能优化)原作者:Bert Scalzo⽬前,HP,Compaq,Dell,IBM 以及 Oracle 都在加快速度拥抱 Linux ,这个开放源码的操作系统。
根据 eWeek 的统计,去年 Linux 服务器的销售量⼤约占据了 Compaq 的 30%,Dell 的 13.7%,IBM 的 13.5%。
⽽且 IBM 2001年度在 Linux 上的投⼊有 10 个亿。
Intel 最新的 64 位的 Itanium CPU 只⽀持四种操作系统:Windows, Linux, AIX 和 HP-UX。
我们也不要忘记Oracle 的 9i 数据库 Linux 版本要⽐ Windows 版本早⼀个⽉。
尽管 Linux 能跑在从 IBM S/390 到 Sun SPARC 结构的服务器,但是对于⼤多数⼈来说,Intel 还是 Linux 跑得最多的平台。
本⽂就是要讲述通过简单的性能调正,使 Oracle 的性能提升 1000% 的办法。
本⽂采⽤的测试环境是⼀台 Compaq 4 CPU,512 MB ,8 部 7200 rpm SCSI 磁盘的服务器,然后在⼏乎同样的单 CPU Athlon 系统上作了测试,内存⼀样,但是只有⼀部 7200 rpm 的 Ultra 100 IDE 磁盘。
尽管最后的结果和得到的百分⽐不⼀样,但是观测得到的性能提升是⼀致的。
为了简单起见,我们的测试环境采⽤ TPC 基准测试,它⼴泛地⽤于 OLTP 的负荷测试。
Quest 公司有⼀个叫做 Benchmark Factory 的⼯具,使测试⼯作变得就像发送电⼦邮件⼀样简单。
下⾯我们将分别通过 DB 的调整和 OS 的调整来看测试的结果。
DB1 的初始化参数⼀般不常见,为了说明问题,我们使⽤这些参数并作为基准。
DB1: Initial DatabaseDatabase Block Size 2KSGA Buffer Cache 64MSGA Shared Pool 64MSGA Redo Cache 4MRedo Log Files 4MTablespaces DictionaryTPC Results Load Time (Seconds) 49.41Transactions / Second 8.152显然需要加⼤ SGA ⼤⼩,我们来看 DB2 的结果:DB2: Cache & PoolDatabase Block Size 2KSGA Buffer Cache 128MSGA Shared Pool 128MSGA Redo Cache 4MRedo Log Files 4MTablespaces DictionaryTPC Results Load Time (Seconds) 48.57Transactions / Second 9.147增⼤ SGA 已经缓冲看来对于性能的提升并不显著,加载时间只提升了 1.73%。
千里之行,始于足下。
oracle优化下载,oracle性能优化总结下载
抱歉,但我没有办法提供您所要求的文件下载。
然而,我可以提供一些关
于Oracle优化和性能优化的总结,希望对您有所帮助:
Oracle优化:
1. 使用合适的索引,优化查询性能。
2. 优化SQL语句,避免全表扫描和不必要的连接操作。
3. 避免频繁的数据库连接和断开操作,使用连接池来管理连接。
4. 配置合适的内存参数,避免频繁的硬盘读写操作。
5. 定期进行数据库统计信息的收集和分析,以便优化查询计划。
Oracle性能优化总结:
1. 使用合适的硬件设备,提高I/O性能。
2. 配置适当的数据库参数,如内存、并发连接数等。
3. 使用Oracle性能监控工具来进行性能分析和优化。
4. 使用合适的索引和分区来提高查询性能。
5. 避免在数据库中存储大量重复数据,使用标识符和引用来避免数据冗余。
希望以上信息对您有所帮助,如果您有其他问题,欢迎继续提问。
第1页/共1页。
提高ORACLE数据库性能优化策略作为一名幼儿相关工作者,多年来一直致力于幼儿教育领域,见证了幼儿教育的蓬勃发展。
如今,信息技术在教育行业的应用越来越广泛,数据库性能优化成为提高教育信息化水平的重要一环。
本文将以ORACLE数据库为例,为大家介绍一些提高数据库性能的优化策略。
一、合理规划数据库表结构1.选择合适的字段类型:在设计数据库表时,合理选择字段类型至关重要。
例如,如果一个字段的值只包含数字,那么可以使用NUMBER 类型,而不是VARCHAR类型。
这样可以提高数据的存储效率。
2.设置合理的数据表分区:对于大量数据的表,可以考虑使用分区技术。
分区可以提高查询效率,减少锁竞争,降低维护成本。
在实际应用中,可以根据业务需求和数据特点,选择合适的分区策略。
3.使用合适的索引:索引可以提高查询速度,但过多或不当的索引会影响数据库性能。
在设计索引时,应充分考虑查询需求,创建合适的索引。
同时,定期监控索引的使用情况,根据实际效果调整索引策略。
二、优化查询语句1.避免使用SELECT:尽量避免使用SELECT查询所有字段,而是通过指定需要查询的字段名称,减少数据的传输量。
2.使用JOIN替代子查询:在适当的情况下,使用JOIN操作可以提高查询效率。
同时,尽量减少子查询的使用,以降低数据库的负担。
3.合理使用聚合函数:在查询中,尽量使用聚合函数(如COUNT、SUM、MAX等)进行数据统计,可以提高查询效率。
4.利用缓存:对于频繁查询且数据变化不频繁的统计数据,可以考虑将查询结果缓存到内存中,减少数据库的访问次数。
三、数据库维护与监控1.定期优化表:通过使用ORACLE的优化工具,如DBMS_UTILITY.ANALYZE_TABLE,定期分析表的统计信息,以便更好地优化表的结构和性能。
2.定期重建索引:随着时间的推移,索引可能会因为数据的增删改而发生碎片化。
定期重建索引可以提高查询效率。
3.监控数据库性能:通过使用ORACLE的性能监控工具,如AWR报告,监控数据库的性能,发现并解决潜在的性能问题。
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可以根据实
际需要对这些参数进行设置内核参数名说明bufpages对buffer空
间不按静态分配,采用动态分配,使bufpages值随nbuf一起对
2
buffer空间进行动态分配。Create_fastlinks对HFS文件系统允许
快速符号链接dbc_max_pct加大最大动态buffer空间所占物理内存
的百分比,以满足应用系统的读写命中率的需要。Dbc_min_pct设
置最小动态buffer空间所占物理内存的百分比desfree提高开始交
换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见
的系统崩溃(Crash)。Fs_async允许进行磁盘异步操作,提高CPU
和磁盘的利用率lotsfree提高系统解除换页操作的空闲内存的上限
值,保证应用程序有足够的可用内存空间。Maxdsiz针对系统数据量
大的特点,加大最大数据段的大小,保证应用的需要。(32
位)maxdsiz_64bitmaximum process data segment size for
64_bitMaxssiz加大最大堆栈段的大小。(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):全表扫描
3
导致大量的I/O2. 尽量建好和使用好索引:建索引也是有讲究的,在
建索引时,也不是索引越多越好,当一个表的索引达到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
4
参数的唯一目的就是为了控制块如何在 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_locks10)、
open_cursors (打开光标数)11)、dbwr_io_slaves (后台写进程数)