Oracle常用调优手段[转]
Oracle数据库应用系统的调优主要包括十个方面:(1)、优化数据库内存;(2)、在Oracle共享池中固定应用程序代码;(3)、优化数据存储;(4)、优化数据排序的技术;(5)、优化SQL语句;(6)、优化回退段;(7)、优化索引;(8)、优化磁盘I/O;(9)、定期生成数据库对象的状态统计信息;(10)、优化操作系统环境。其实质就是降低CPU负载、改善I/O性能。 1、化磁盘I/O数据库的作用就是实现对数据的管理和查询,所以必然存在对数据的大量读写操作,其I/O问题也往往是导致Oracle数据库性能问题的重要原因。1.1、Oracle中I/O的产生1.2、优化OS存储一、在U
Oracle性能优化:数据库配置和IO问题
二、数据库配置和IO问题降低磁盘的IO分散磁盘的IO表空间使用本地管理1、将文件分散到不同的设备上1)将数据文件与日志文件分开2)减少与服务器无关的磁盘IO3)评估裸设备的使用4)分割表数据2、表空间的使用系统表空间保留给数据字典对象创建本地管理表空间以避免空间管理问题将表和索引分散到独立的表空间中使用独立的回滚表空间将大的数据库对象保存在各自独立的表空间中创建一个或多个独立的临时表空间下列数据库对象应该有单独的表空间:数据字典、回滚段、索引、临时段、表、大对象3、检查IO统计数据Select phyrds,phywrts,d.name fr
Oracle性能优化经验分享之系统参数设置(转)
一、SGA1、Shared pool tunningShared pool的优化应该放在优先考虑,因为一个cache miss在shared pool中发生比在data buffer中发生导致的成本更高,由于dictionary数据一般比library cache中的数据在内存中保存的时间长,所以关键是library cache的优化。Gets:(parse)在namespace中查找对象的次数;Pins:(execution)在namespace中读取或执行对象的次数;Reloads:(reparse)在执行阶段library cache misses的次数,导致sql需要重新解析。1) 检查v$librarycache中sql area的gethitratio是否超过90%,如果未超过90%,应该检查应用代
Oracle性能优化之优化排序操作(转)
概念服务器首先在sort_area_size指定大小的内存区域里排序,如果所需的空间超过sort_area_size,排序会在临时表空间里进行。在专用服务器模式下,排序空间在PGA中,在共享服务器模式下,排序空间在UGA中。如果没有建立large pool,UGA处于shared pool中,如果建立了large pool,UGA就处于large pool中,而PGA不在sga中,它是与每个进程对应单独存在的。 PGA:program global area,为单个进程(服务器进程或后台进程)保存数据和控制信息的内存区域。PGA与进程一一对应,且只能被起对应的进程读写,PGA在用户登录数据库创建会话的时候建立
Oracle性能优化之诊断latch竞争(转)
1、概念 Latch是简单的、低层次的序列化技术,用以保护SGA中的共享数据结构,比如并发用户列表和buffer cache里的blocks信息。一个服务器进程或后台进程在开始操作或寻找一个共享数据结构之前必须获得对应的latch,在完成以后释放latch。不必对latch本身进行优化,如果latch存在竞争,表明SGA的一部分正在经历不正常的资源使用。 1)Latch的作用: A、序列化访问:保护SGA中的共享数据结构;保护共享内存的分配。 B、序列化执行:避免同时执行某些关键代码;避免互相干扰。 2)Latch请求的两种类型: A、willing-to-w
Oracle性能优化之Rollback(undo)Segment优化(转)
1、概念 Transaction以轮循的方式使用rollback segment里的extent,当前所在的extent满时就移动到下一个extent。可能有多个transaction同时向同一个extent写数据,但一个rollback segment block中只能保存一个transaction的数据。 Oracle 在每个Rollback segment header中保存了一个transaction table,包括了每个rollback segment中包含的事务信息,rollback segment header的活动控制了向rollbak segment写入被修改的数据。rollback segment header是经常被修改的数据库块,因此它应该被长时间留在buffer cache中,为了避免在tr
Oracle性能优化之LockContention(转)
1、概念 DML事务使用row-level locks,查询不会锁定数据。锁有两种模式:exlusive、share。 锁的类型: • DML or data locks: – Table-level locks(TM) – Row-level locks(TX) • DDL or dictionary locks 一个transaction至少获得两个锁:一个共享的表锁,一个专有的行锁。Oracle server将所有的锁维护在一个队列里,队列跟踪了等待锁的用户、申请锁的类型以及用户的顺序信息。 Lock在下列情况会释放:commit;rollback;terminated(此时由pmon清理locks)。 Quiesced database:一个数据库如果除了
Oracle性能优化之应用优化(转)
1、概念 为了提高性能,可以使用下列数据访问方法: A、Clusters B、Indexes -B-tree(normal or reverse key) -bitmap -function-based C、Index-organized tables D、Materialized views 索引的层次越多,效率越低,如果索引中含有许多已删除的行,这个索引也会变得低效,如果索引数据的15%已经被删除,应该考虑重建索引。 2、应用问题 A、使用可声明的约束而不是通过代码限制 B、代码共享 C、使用绑定变量而不是文字来优化共享sql D、调整cursor_sharing的值(EXACT/SIMILAR/FORCE)[@more@]
Oracle性能优化之提升block的效率(转)
1、避免动态分配的缺陷 创建本地管理的表空间; 合理设置segment的大小; 监控将要扩展的segment: SELECT owner, table_name, blocks, empty_blocks FROM dba_tables WHERE empty_blocks / (blocks+empty_blocks) < .1; 2、high water mark 记录在segment header block中,在segment创建的时候设定在segment的起始位置,当记录被插入的时候以5个block的增量增加,truncate可以重设high water mark的位置,但delete不能。 在full table scan中,oracle会读取high water mark以下的所有的数据块,所以high water mar
Oracle性能优化之SQL优化(转)
1、优化器模式 Oracle9i有两种优化器模式可以选择: • Rule-based: – Uses a ranking system – Syntax- and data dictionary–driven • Cost-based: – Chooses least-cost path – Statistics-driven Rule-based模式满足向后兼容,而Cost-based模式中的成本大部分来自于逻辑读的次数,推荐使用Cost-based模式。 2、固定optimizer plan 1)概念 对于每一个查询,optimizer都会准备一个定义了操作执行顺序和方法的操作树(执行计划),oracle server根据这个执行计划执行语句。通过固定执行计