Oracle数据库优化设计
- 格式:doc
- 大小:37.50 KB
- 文档页数:8
Oracle数据库参数优化
参数优化对于Oracle数据库来说非常重要,因为它可以有效提高数据库的性能,并提供良好的可用性。
参数优化可令数据库更加稳定和高效地运行。
但是,在参数优化方面,很多初学者犯了不少错误,有些甚至会影响数据库的性能,甚至可能导致数据库出现问题。
因此,在优化参数方面,必须慎重、细心、谨慎。
首先,在参数优化之前,必须对当前参数进行全面的测试,找出需要优化的参数。
一般来说,优化可以采用两种方法,一种是优化全局参数,另一种是优化实例参数。
如果参数设置过高或者过低,可能会影响数据库的性能,因此,在参数优化时,必须按照Oracle数据库提供的最佳实践去设置参数。
最后,应该强调的是,在参数优化时,不要增加参数或者设置参数太高,并且要确保参数优化后,数据库在重要的方面有所改善,比如。
千里之行,始于足下。
oracle优化方法总结Oracle优化是提高数据库性能和响应能力的重要步骤。
本文总结了一些常见的Oracle优化方法。
1. 使用索引:索引是提高查询性能的主要方法。
通过在表中创建适当的索引,可以加快查询速度,并减少数据访问的开销。
但是要注意不要过度使用索引,因为过多的索引会增加写操作的开销。
2. 优化查询语句:查询语句的效率直接影响数据库的性能。
可以通过合理地编写查询语句来提高性能。
例如,使用JOIN来替代子查询,尽量避免使用通配符查询,使用LIMIT来限制结果集的大小等。
3. 优化表结构:表的设计和结构对数据库的性能也有很大的影响。
合理的表设计可以减少数据冗余和不必要的数据存储,提高查询速度。
例如,适当地使用主键、外键和约束,避免过多的数据类型和字段等。
4. 优化数据库参数设置:Oracle有很多参数可以用来调整数据库的性能。
根据具体的应用场景和需求,可以根据情况调整参数的值。
例如,调整SGA和PGA的大小,设置合适的缓冲区大小,调整日志写入方式等。
5. 使用分区表:当表的数据量很大时,可以考虑将表分成多个分区。
分区表可以加速查询和维护操作,提高数据库的性能。
可以按照时间、地域、业务等来进行分区。
6. 优化存储管理:Oracle提供了多种存储管理选项,如表空间和数据文件管理。
合理地分配存储空间和管理数据文件可以提高数据库的性能。
例如,定期清理无用的数据文件,使用自动扩展表空间等。
第1页/共2页锲而不舍,金石可镂。
7. 数据压缩:对于大量重复数据或者冷数据,可以考虑使用Oracle的数据压缩功能。
数据压缩可以减少磁盘空间的使用,提高IO性能。
8. 使用并行处理:对于大型计算或者批处理任务,可以考虑使用Oracle的并行处理功能。
并行处理可以将任务分成多个子任务,并行执行,提高处理能力和效率。
9. 数据库分区:对于大型数据库,可以考虑将数据库分成多个独立的分区。
数据库分区可以提高数据的并行处理能力,减少锁竞争和冲突,提高数据库的性能。
Oracle数据库内存优化操作说明Oracle数据库内存优化是提高数据库性能的重要手段之一。
通过设置合理的内存参数,可以有效地削减IO操作,提高数据访问速度。
本文将介绍一些常见的Oracle数据库内存优化操作。
一、调整PGA参数PGA(Program Global Area)是每个数据库会话独有的内存区域,用于存储排序、哈希操作等临时数据。
调整PGA参数可以提高排序和连接操作的性能。
1. 设置PGA_AGGREGATE_TARGET参数该参数把握PGA内存的总量,一般建议设置为SGA的1/3到1/2。
可以通过以下命令设置:ALTER SYSTEM SET PGA_AGGREGATE_TARGET=XXXM;2. 调整SORT_AREA_SIZE参数该参数把握每个排序操作使用的PGA内存大小,一般建议设置为100MB到200MB。
可以通过以下命令设置:ALTER SESSION SET SORT_AREA_SIZE = XXXM;3. 调整HASH_AREA_SIZE参数第1页/共4页该参数把握每个哈希操作使用的PGA内存大小,一般建议设置为SORT_AREA_SIZE的1/2到1倍。
可以通过以下命令设置:ALTER SESSION SET HASH_AREA_SIZE = XXXM;二、调整SGA参数SGA(System Global Area)是Oracle数据库的全局共享内存区域,用于存储缓存数据、SQL执行方案等。
调整SGA参数可以提高数据访问的速度。
1. 调整SHARED_POOL_SIZE参数该参数把握缓存SQL语句的内存大小,一般建议设置为SGA的1/4到1/3。
可以通过以下命令设置:ALTER SYSTEM SET SHARED_POOL_SIZE=XXXM;2. 调整DB_CACHE_SIZE参数该参数把握数据库缓冲区的内存大小,一般建议设置为SGA的1/2到2/3。
可以通过以下命令设置:ALTER SYSTEM SET DB_CACHE_SIZE=XXXM;3. 调整LOG_BUFFER参数该参数把握数据库日志缓冲区的内存大小,一般建议设置为10MB到100MB。
千里之行,始于足下。
Oracle数据库参数优化Oracle数据库参数优化是指通过调整数据库的配置参数,提高数据库的性能和稳定性。
下面是一些常见的Oracle数据库参数优化技巧:1. SGA参数优化:- 调整sga_target参数以控制SGA的大小。
SGA包括数据库缓冲区、共享池、重做日志缓冲区等,适当调整SGA的大小可以减少IO操作,提高数据库性能。
- 调整db_cache_size参数以增大数据库缓冲区的大小,提高数据块的访问速度。
- 调整shared_pool_size参数以增大共享池的大小,提高SQL语句的解析和执行效率。
2. PGA参数优化:- 调整pga_aggregate_target参数以控制PGA的大小。
PGA是用于处理SQL查询和排序的内存区域,适当调整PGA的大小可以减少磁盘IO操作,提高查询和排序的性能。
3. Redo日志参数优化:- 调整log_buffer参数以增大重做日志缓冲区的大小,减少频繁的重做日志刷新操作,提高数据库的写入性能。
- 调整log_checkpoint_timeout参数以控制重做日志刷新的频率,避免过于频繁的刷新。
4. 并行处理参数优化:- 调整parallel_max_servers参数以增大并行处理的资源限制,提高并行查询和并行DML操作的性能。
第1页/共2页锲而不舍,金石可镂。
- 调整parallel_min_servers参数以设置最小的并行处理资源数,避免并行操作的启动延迟。
5. SQL优化:- 使用合适的索引和优化的SQL语句,优化查询的执行计划。
- 使用绑定变量而不是直接将参数传递到SQL语句中,避免SQL重解析,提高性能。
6. 服务器参数优化:- 调整processes参数以增加数据库的并发连接数。
- 调整sessions参数以控制数据库的最大会话数。
- 调整open_cursors参数以增大打开游标的数量,避免游标溢出。
以上是一些常见的Oracle数据库参数优化技巧,但具体的优化策略需要根据实际情况进行调整,可以参考Oracle官方文档和专业的DBA建议。
34种Oracle性能优化的方法1、选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。
如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.2、WHERE子句中的连接顺序:ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.3、SELECT子句中避免使用‘ * ‘:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间4、减少访问数据库的次数:ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等;5、在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE 参数, 可以增加每次数据库访问的检索数据量 ,建议值为2006、使用DECODE函数来减少处理时间:使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.7、整合简单,无关联的数据库访问:如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)8、删除重复记录:最高效的删除重复记录方法 ( 因为使用了ROWID)例子:DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);9、用TRUNCATE替代DELETE:当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)10、尽量多使用COMMIT:只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:COMMIT所释放的资源:a. 回滚段上用于恢复数据的信息.b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACLE为管理上述3种资源中的内部花费11、用Where子句替换HAVING子句:避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. (非oracle中)on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后,因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。
常见Oracle数据库优化策略与方法
Oracle数据库优化是提高数据库性能的关键步骤,可以采取多种策略。
以下是一些常见的Oracle数据库优化策略:
1.硬件优化:这是最基本的优化方式。
通过升级硬件,比如增加RAM、使用
更快的磁盘、使用更强大的CPU等,可以极大地提升Oracle数据库的性能。
2.网络优化:通过优化网络连接,减少网络延迟,可以提高远程查询的效率。
3.查询优化:对SQL查询进行优化,使其更快地执行。
这包括使用更有效的
查询计划,减少全表扫描,以及使用索引等。
4.表分区:对大表进行分区可以提高查询效率。
分区可以将一个大表分成多
个小表,每个小表可以单独存储和查询。
5.数据库参数优化:调整Oracle数据库的参数设置,使其适应工作负载,可
以提高性能。
例如,调整内存分配,可以提升缓存性能。
6.数据库设计优化:例如,规范化可以减少数据冗余,而反规范化则可以提
升查询性能。
7.索引优化:创建和维护索引是提高查询性能的重要手段。
但过多的索引可
能会降低写操作的性能,因此需要权衡。
8.并行处理:对于大型查询和批量操作,可以使用并行处理来提高性能。
9.日志文件优化:适当调整日志文件的配置,可以提高恢复速度和性能。
10.监控和调优:使用Oracle提供的工具和技术监控数据库性能,定期进行性
能检查和调优。
请注意,这些策略并非一成不变,需要根据实际情况进行调整。
在进行优化时,务必先备份数据和配置,以防万一。
oracle sql优化常用的15种方法1. 使用合适的索引索引是提高查询性能的重要手段。
在设计表结构时,根据查询需求和数据特点合理地添加索引。
可以通过创建单列索引、复合索引或者位图索引等方式来优化SQL查询。
2. 确保SQL语句逻辑正确SQL语句的逻辑错误可能会导致低效查询。
因此,在编写SQL语句前,需要仔细分析查询条件,确保逻辑正确性。
3. 使用连接替代子查询在一些场景下,使用连接(JOIN)操作可以替代子查询,从而减少查询的复杂度。
连接操作能够将多个数据集合合并为一个结果集,避免多次查询和表的扫描操作。
4. 避免使用通配符查询通配符查询(如LIKE '%value%')在一些情况下可能导致全表扫描,性能低下。
尽量使用前缀匹配(LIKE 'value%')或者使用全文索引进行模糊查询。
5. 注意选择合适的数据类型选择合适的数据类型有助于提高SQL查询的效率。
对于整型数据,尽量使用小范围的数据类型,如TINYINT、SMALLINT等。
对于字符串数据,使用CHAR字段而不是VARCHAR,可以避免存储长度不一致带来的性能问题。
6. 优化查询计划查询计划是数据库在执行SQL查询时生成的执行计划。
通过使用EXPLAIN PLAN命令或者查询计划工具,可以分析查询计划,找出性能瓶颈所在,并对其进行优化。
7. 减少磁盘IO磁盘IO是影响查询性能的重要因素之一。
可以通过增加内存缓存区(如SGA)、使用高速磁盘(如SSD)、使用合适的文件系统(如ASM)等方式来减少磁盘IO。
8. 分区表对于大数据量的表,可以考虑使用分区表进行查询优化。
分区表可以将数据按照某个规则分散到不同的存储区域,从而减少查询范围和加速查询。
9. 批量操作尽量使用批量操作而不是逐条操作,可以减少数据库的事务处理开销,提高SQL执行效率。
可以使用INSERT INTO SELECT、UPDATE、DELETE等批量操作语句来实现。
在oracle数据库管理中,优化是最重要的一项,也是最基础的一项。
oracle优化是为了改善数据库访问性能,使其更加高效。
要进行优化,就需要正确的方法和原则,下面介绍oracle优化的一些原则和方法。
一、优化原则1.应限制数据库大小,减少数据库扩充带来的影响,进而节省存储空间;2.应注重数据库索引结构优化,引起合理分类,改善搜索效率;3.应使用合理的逻辑结构,使得访问表时,扫描表行越少越高;4.应尽量避免使用全表扫描,从而提高数据处理速度;5.应尽量避免在数据库中使用触发器或存储过程,以免增加不必要的开销;6.应注重事务处理,尽量避免使用长事务;7.应尽量减少事务完成时间,避免不必要的资源锁定;8.应使用合理的架构逻辑结构,避免将多个大表同时加载到内存中;9.应限制数据库连接数,减少用户的等待时间和系统的负荷;10.应尽可能用正确的方式和有效的技术来优化系统。
二、优化方法1.创建索引:创建正确的索引对于提高oracle数据库的性能非常重要。
创建索引时,要考虑建立索引应包括的列和索引的类型;2.优化SQL语句:通过修改或优化SQL语句,可以使oracle数据库更加高效;3.改善数据库可用性:通过合理的备份与恢复措施,以及采用定期维护慢查询SQL和检查数据的一致性等技术,可以改善数据库的可用性;4.监控调优:可以通过oracle数据库定期监控功能,监控各种资源消耗情况,并深入分析SQL表达式,进行针对性的优化;5.定期重建表和索引:定期重建表和索引,能够使oracle数据库性能得到改善;6.合理分区:oracle数据库中用到分区表来改进query语句执行速度,减少用户的时间等待;以上是oracle优化的原则和方法,以改善oracle数据库的性能,。
论Oracle数据库的性能优化问题Oracle数据库是一款流行的企业级数据库软件,但其性能优化问题也是不可避免的。
在实际应用中,如果Oracle数据库出现性能问题,将有严重的影响和损失。
因此,本文将讨论如何优化Oracle数据库的性能问题。
首先,针对Oracle数据库的性能瓶颈,可以通过调整数据库参数来提高性能。
Oracle数据库有很多参数可以配置,例如,缓存区大小、连接数、内存分配等。
通过针对不同的应用场景调整不同的参数配置,可以最大化地利用数据库的性能。
其次,针对SQL的性能问题,可以通过改进SQL语句来提高性能。
SQL优化是一项复杂的工作,但可以通过分析SQL执行计划来发现性能瓶颈,例如,缺乏索引、大表连接、高开销的子查询等。
并可以通过添加索引、优化查询语句等方式来提高数据库的性能。
除此之外,还可以通过加强硬件设备等方面来提升数据库性能。
例如,扩展数据库服务器的内存和硬盘容量,可以提高数据库的读写速度。
而使用高速网络设备如IB网络和10/100G以太网设备等,也可提高数据库的数据传输速度。
此外,Oracle数据库的性能优化也需要管理进程的支持与配合。
例如,数据库管理员需要监控数据库服务器硬件和软件性能,例如Oracle数据库的内部锁、等待事件、I/O活动等等。
在监控到性能问题后,需要在业务空档期进行优化,如调整SQL语句、更改数据库参数等。
总之,提高Oracle数据库的性能需要全面考虑软硬件配置、SQL语句等多个方面的因素。
通过合理的参数配置、SQL优化和硬件支持等方式,可以优化数据库的性能,提高应用的稳定性和响应速度。
千里之行,始于足下。
Oracle的性能优化
Oracle的性能优化是提高数据库系统性能和响应速度的关键步骤,可以通
过如下几个方面进行优化:
1. 数据库设计和规范化:合理的数据库设计和良好的规范化可以减少数据冗余,提高查询效率,避免数据冲突和不一致。
2. 索引优化:在频繁查询的字段上创建适当的索引,可以加快查询速度。
但是,索引不宜过多,因为它们会增加数据修改和插入的时间。
3. 查询优化:优化查询语句的执行计划,使用正确的连接方法(如内连接、外连接),避免全表扫描。
4. 硬件升级:增加内存、硬盘和处理器等硬件资源,可以显著提高
Oracle数据库的性能。
5. 优化配置参数:根据数据库的特点和应用的需求,调整数据库的配置参数,例如SGA大小、PGA大小、日志文件大小等,以提高性能。
6. 数据库优化:使用合适的数据库特性,如分区表、分区索引、物化视图等,优化数据库的存储和查询效率。
7. 监控和调优:持续监控数据库的性能指标,如CPU利用率、内存使用率、磁盘IO等,并及时进行适当的调优操作。
第1页/共2页
锲而不舍,金石可镂。
总体来说,Oracle的性能优化需要综合考虑数据库设计、硬件配置、查询优化和系统监控等多个方面,通过不断的调整和优化,提高数据库的性能和响应速度。
Oracle数据库优化设计【摘要】电子计算机技术推动着人们生活快速的发展,在企业生产上越来越多的应用到计算机技术。
计算机技术几乎涵盖了人们生活的方方面面,目前正使得我们的生活节奏变得更快、更便捷。
本文则主要针对Oracle数据库相关问题进行研究,探讨Oracle数据库优化设计在企业中的应用情况以及如何对其进行优化作为主要讨论点,为企业在进行Oracle数据库维护和优化的时候提供借鉴。
同时希望可以通过此篇文章实现对Oracle数据库优化方案进行总结,以便以后学习研究。
【关键词】计算机;数据库;Oracle;优化一、前言数据库是承载数据的载体,存放和提供数据的“库房”,为我们进行数据查询、修改、管理等操作提供便利。
建立数据库可以帮我们提升工作效率,通常适合较为庞大的系统数据存储。
例如,国网新疆电力目前覆盖全疆14个地州(市),涉及用户达2000多万人口,管理40多个部门和下属单位。
这么复杂的机构需要高效稳定的IT系统支撑国网新疆电力公司。
国网新疆电力目前有多个IT系统,比较重要的系统有综合管理数据库、营销系统数据库、ODS系统、财务系统。
这么多系统数据日增长量超过2TB,这需要有效的优化手段解决数据库的性能问题。
目前通用的方式为采用Oracle数据库来对这些数据进行存储管理,面对厂里人员的变动则需要进行数据更新,随着系统长期运行、用户数和数据量不断增大以及业务不断变化,系统运行期间就会涉及到数据库优化。
本文就从Oracle 数据库优化进行简单的讨论,针对在优化过程中的一些注意事项、优化事项进行分析,为我们在工作中能够熟练的掌握优化技术。
二、Oracle数据库介绍Oracle数据库,英文全名为Oracle Data-base,又被称为Oracle RDBMS或者直接简称为Oracle。
目前最流行的B/S和C/S架构的系统中均应用到了数据库,由于它们的架构设计中都具有自己的服务器,而数据存在这些服务器中,则需要数据库对其进行储存。
目前对于数据库的使用越来越广泛,随着人们对于数据库的研究越来越深入,逐渐出现了数据库云,将计算机的云计算应用到了数据库之中,这样使得多个数据库联合组成了更加庞大的数据库网,它们之间实现了数据共享,因此对于知识、信息的涵盖将会变得更广。
云计算的实现,带给计算机网络发展巨大的空间,使得将世界的计算机联合起来形成一层一层的网络,与此同时也将数据库采用云管理,为数据库的发展提供更加广阔的空间[1]。
三、数据库优化方案介绍多数研究者在面对Oracle数据库优化课题时,都会存在这样的思想误区,即认为只有在系统出现运行问题时才需要进行系统性能调整。
而事实上,对Oracle数据库的性能进行调整和优化是一个漫长而复杂的过程,是贯穿于整个系统运行周期的。
因此,在进行系统性能优化时,应按照以下流程来进行:对系统各功能组件和硬件设备进行正确的配置→对数据库结构进行调整→对SQL语句进行优化→调整参数→进行磁盘I/O与服务器网络性能的调整。
以上流程是一个密切联系的整体,只有保证严格按照这一流程进行Oracle数据库系统性能调整,才能确保系统的性能达到最佳状态,真正实现Oracle数据库的优化设计。
图1所示是进行数据库优化时需要考虑的内容。
优化是数据库体系的延续,数据库的结构和运行的机制决定了数据库的优化模式,所以说数据库的体系结构是优化的基石。
如果对数据库的体系结构有深刻的理解,优化便水到渠成。
反过来,通过优化数据库,可以更深入的了解数据库体系结构。
数据库各个方面都有优化的余地,主要的优化方向分为实例的优化、数据库的优化、SQL语句的优化。
其中SQL优化是重中之重。
对Oracle数据库进行优化,应该遵循优化SQL查询语句——索引优化——合理分布数据库物理文件——分析及优化Oracle内存分配原则。
具体如下:(一)SQL查询优化SQL查询,主要针对数据库的信息进行搜索,寻找自己的需求信息。
数据库内的一切操作都是经由SQL语句进行执行,因此SQL语句的执行效率很大程度上决定了Oracle数据库的性能。
进行SQL语句的优化,首先应该构建原始数据库BASICPROJECT,其中包含了与生产数据库基本一致的数据库对象;其次,应该充分的利用SQL Trace、awrsqrpt、sqlplus中的autotrace、explain等跟踪技术对语句进行优化重写[4]。
我们在建立SQL语句的时候要尽量的避免出现相关子查询,以及选择语句的使用,这样就能从数据建立的时候减轻查询的负担。
针对联合查询连接遇到5张或者5张表单以上的选择时,建议采用优化器对SQL 语句中所包含的表单进行物理大小排序,建立起一定的查询顺序,来提升查询的效率。
(二)索引优化分析索引技术是提升检索速度和系统性能的主要技术,对于数据查询来说,合理使用索引可以极大的提高查询的命中率和效率。
索引是将表中数据的逻辑值映射到rowid中,所以在查询时使用索引功能能够快速的定位出查询数据的物理地址,从而找出数据。
索引对数据库的性能影响是巨大的,但索引不是万能的,数据库对索引的使用是有选择的,我们可以强制使用索引,也可以强制不使用索引。
一般的情况下数据库会自动的判断是否使用索引,除非你明确的在SQL语句中指定。
所有索引的原形都是树状结构,由根、枝干和叶子组成。
根和枝干中存放键值范围的导引指针,叶子中存放的是条目,条目中存放的是索引的键值和该数据行ROWID。
索引的叶子间通过指针横向的联系在一起,前一个叶子指向下一片叶子,这样的目的是数据库在找到一个叶子后就可以查找相临近的叶子,而不必再次去查找根和枝干的数据块。
有的DBA发现了索引并不能提高查询速度,反而对整个数据库的性能有较大的不良影响,出现该问题主要是和SGA数据管理方式有关。
当Oracle进行数据高速缓存管理时,普通数据的驻留权限要比索引数据的权限要低,当两者在空间上竞争时,索引数据往往会驻留;如果是大型表建立索引时,索引数据占了大部分的缓存空间,使Oracle只能通过磁盘读写来获得数据,所以在大型表分区后,伴随索引也得进行相应分区,索引的使用应该有一个指定的合适路径[5]。
(三)分布表空间在整个数据库工作过程中,各相关进程会将数据库中的事务分别写到联机日志文件、归档日志文件和数据文件当中,这会不可避免的造成这三类文件之间的I/O冲突;并且归档日志文件因其特殊性,无法同系统、业务和索引这些表空间共存,这就需要一个独立的磁盘来完成合理分布表空间的功能,对各项数据进行合理的分配,以避免文件之间的I/O冲突。
(四)数据缓冲区的调整分析数据库的缓冲区是SGA不可缺少的组成部分,它的作用是对磁盘的读入数据进行存储,存储的数据为用户共享。
如果需要修改数据时,首先要从数据文件中将数据读取出来存储在数据缓冲区;如果用户对数据缓冲区的设置太小,那么数据的操作性能将会受到很大的影响。
用户越多,该问题越突出,该问题的出现使得很多人去关心如何判断数据缓冲区大小,如何确定缓冲区的效率,该类问题可以通过计算命中率来进行确认。
数据缓冲区V$sysstat中的consistent_gets、db_block_gets是consistent mode 和current mode模式下的数据读取总量,physical reads是整个磁盘物理数据读取总量,这两个数据的读取总量的比值就是所谓的命中率,如果两个数据比值<90%,那么就需要对该缓冲区大小进行调整[2]。
(五)共享池调整分析共享池同样也是SGA的重要组成部分,它主要包含了数据字典高速缓存与库高速缓存,这两者的作用是对整个SQL程序进行语法分析、编译以及执行。
库高速缓存中会将解析过的SQL语句、PL/SQL(存储过程、函数、包)进行缓存。
如果为了工作的需要,将解析过的SQL信息重用会提高整个数据库的性能,可以将解析过的SQL信息存储在共享池中,这就需要共享池的设置要足够的大。
通过对V$librarycache查询实例来观察整个库高速度缓存的活动情况,其中的reloads和pins,它们分别是库高速缓存执行阶段的未命中数目和库高速缓存中被执行的次数,如果库缓冲区的失败率超过的1%,那么就需要对其进行调整。
除此之外,还有些情况也需要共享池的设置要大,字典数据高速缓存的总丢失数和总的存取数的比值应该接近零,当这个数值超过10%,那么就需要对其进行调整。
如将表定义的详细信息长期的存储在共享池中,将其进行重用,提高数据库的整体性能[3]。
通过V$rowcache来对数据字典高速缓存活动进行详细查询,其中的get misses和gets分别代表的是字典数据读取的失败和成功次数,通常要求的比值小于10%,若超过则需要进行及时的调整。
(六)日志缓冲区优化方案日志缓冲区主要是保存了对数据库修改信息,设置的大小一般为2兆以内的内存,最小为500K。
日志缓冲区也不能过小,否则会增加日志的写盘次数,从而为I/O接口增加负担。
日志缓冲区中的常见指令为:immediate gets表示成功立即得到日志缓冲区次数;immediate misses 则表示未成功立即获取日志缓冲区次数。
V$latch中的gets和misses表示成功获得缓冲日志次数以及未成功获得日志缓冲区次数,其失败率要小于1%,如果超出则需要对数据库进行调整。
(七)合理的使用工具有时候想直接在SQLPLUS中看ASH/ADDM/AWR报告,用下面方法比较方便,因为AWR数据在数据库中默认只保留7天,当我们进行性能对比分析需要保留时段之前的AWR时,可以采用脚本定时将AWR报告输出保存。
ASH (Active Session History)ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。
不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。
生成ASH报告:SQLPLUS>@?/rdbms/ashrpt.sqlASH内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(Autom-atic Workload Repository ,AWR)由后台进程MMON完成。
ASH 信息同样被采集写出到AWR负载库中。
由于内存不是足够的,所以MMNL进程在ASH写满后会将信息写出到AWR负载库中。
ASH全部写出是不可接受的,所以一般只写入收集的10%的数据量,而且使用direct-path insert完成,尽量减少日志的生成,从而最小化数据库性能影响。
写出到AWR负载库的ASH信息记录在AWR的基础表wrh$active_session_hist中,wrh$active_session_hist是一个分区表,Oracle会自动进行数据清理。