Oracle的性能优化-文档资料
Oracle自带性能分析报告工具-awr介绍和分析报告

Oracle自带性能分析工具-AWR介绍和分析华三通信技术1 Oracle 10g的AWR性能优化工具简介AWR (Automatic Workload Repository)既自动工作负载信息库是Oracle10g新提供的收集数据库统计信息的置工具。
它比之前的statspack有显著的改进,收集的信息也更多、更全面,使用方法也更简单。
它主要采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题,如包括AWR存区,历史数据存储文件和ASH等部件。
AWR报告的容繁多,官方文档也没有对所有参数给出说明。
AWR产生的报表包括以下几部分。
报表具体容参见如下插入的对象。
1、Report SummeryCache sizesLoad profileInstance Efficiency Percentages (Target 100%)Shared Pool StatisticsTop 5 Timed Events2、RAC StatisticsGlobal Cache Load ProfileGlobal Cache Efficiency Percentages (Target local+remote 100%)Global Cache and Enqueue Services - Workload CharacteristicsGlobal Cache and Enqueue Services - Messaging Statistics3、Wait Events StatisticsTime Model StatisticsWait ClassWait EventsBackground Wait EventsOperating System StatisticsService StatisticsService Wait Class Stats4、SQL StatisticsSQL ordered by Elapsed TimeSQL ordered by CPU TimeSQL ordered by GetsSQL ordered by ReadsSQL ordered by ExecutionsSQL ordered by Parse CallsSQL ordered by Sharable Memory SQL ordered by Version CountSQL ordered by Cluster Wait Time Complete List of SQL Text5、Instance Activity StatisticsInstance Activity StatsInstance Activity Stats - Absolute Values Instance Activity Stats - Thread Activity 6、IO StatsTablespace IO StatsFile IO Stats7、Buffer Pool Statistics8、Advisory StatisticsInstance Recovery StatsBuffer Pool AdvisoryPGA Aggr SummaryPGA Aggr Target StatsPGA Aggr Target HistogramPGA Memory AdvisoryShared Pool AdvisorySGA Target AdvisoryStreams Pool AdvisoryJava Pool Advisory9、Wait StatisticsBuffer Wait StatisticsEnqueue Activity10、Undo StatisticsUndo Segment SummaryUndo Segment Stats11、Latch StatisticsLatch ActivityLatch Sleep BreakdownLatch Miss SourcesParent Latch StatisticsChild Latch Statistics12、Segment StatisticsSegments by Logical ReadsSegments by Physical ReadsSegments by Row Lock WaitsSegments by ITL WaitsSegments by Buffer Busy WaitsSegments by Global Cache Buffer Busy Segments by CR Blocks ReceivedSegments by Current Blocks Received 13、Dictionary Cache StatisticsDictionary Cache StatsDictionary Cache Stats (RAC)14、Library Cache StatisticsLibrary Cache ActivityLibrary Cache Activity (RAC) 15、Memory StatisticsProcess Memory SummarySGA Memory SummarySGA breakdown difference 16、Streams StatisticsStreams CPU/IO UsageStreams CaptureStreams ApplyBuffered QueuesBuffered SubscribersRule Set17、Resource Limit Stats18、init.ora Parameters19、Global Enqueue Statistics20、Global CR Served Stats21、Global CURRENT Served Stats22、Global Cache Transfer Stats2 AWR配置2.1 AWR统计数据的缺省配置AWR 实质上是一个 Oracle 的置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。
Oracle优化常用概念

日期
动态性能视图和数据字典视图
• 动态性能视图:v$开头 • 数据字典视图:dba_*、all_*、user_*
日期
动态性能视图
• v$session,v$session_wait,v$session_event, • v$sql • v$parameter
日期
数据字典视图
• dba_data_files • user_tables • user_indexes • user_objects • user_source • user_segments:对象实际占用空间,非实际使用空间 • user_users,user_errors,user_constraints,user_tablespac
日期
为什么要做柱状图
• Oracle在选择索引时会检查索引的效率从而确定是否使用 索引,而柱状图正是提供了这种信息。如果不做柱状图, oracle就确定不了索引的效率,会倾向于使用索引,可能 反而不如做全表扫描来得快
日期
如何生成柱状图
• analyze table tb_name compute|estimate statistics for all indexed columns; 针对索引列
找到前不返回数据。 • hash join:使用条件:仅用于等价连接;相关资源:内存、临时空间 优点:当缺乏索引或者索引条件模糊时,哈希连接连接比嵌套循环有效。通常比
排序合并连接快。在数据仓库环境下,如果表的纪录数多,效率高。 缺点:为建立哈希表,需要大量内存。第一次的结果返回较慢。
日期
执行计划
• 什么是执行计划 • 如何生成执行计划 • 如何看懂执行计划
日期
创建索引的目的
• 从根本来讲就是为了加快查询速度 • Oracle出于对效率的考虑,某些约束会关联到索引,从而
Oracle12c性能优化攻略:攻略1-1:创建具有最优性能的数据库

Oracle12c 性能优化攻略:攻略1-1:创建具有最优性能的数据库⼀:章节前⾔本章着眼于影响表中数据存储性能的数据库特性本章着眼于影响表中数据存储性能的数据库特性。
表的性能部分取决于在创建之前所应⽤的数据库特性。
例如:在最初创建数据库时采⽤的物理存储特性以及相关的表空间都会在后来影响表的性能。
类似地,表性能还受到最开始选择的物理特性的影响。
例如:表类型和数据类型。
因此应⽤实践中使⽤的数据库、表空间、和表的创建标准(并将性能问题放在⼼上),就形成了优化数据可能性和可扩展性的基础。
组成Oacle 数据库的物理结构⽤来存储、管理、保护以及读取数据。
在创建数据库的时候,可以选择应⽤⼀些与性能相关的特性。
例如⽂件的初始布局以及表空间的管理类型,都是在创建数据库时制定。
这时所实现的架构上的决策,通常都会产⽣很长远的影响。
提⽰: oralce 实例的定义是其内存结构及其后台进程。
⽽Oracle 数据库则由物理⽂件(即:数据⽂件、控制⽂件、在线重做⽇志⽂件)组成。
如图1-1所描述的那样,表空间是⽀持管理⼀组数据⽂件的逻辑结构。
数据⽂件就是磁盘的物理⽂件。
配置表空间时,要注意⼀些对性能会产⽣深远影响的特性,也就是本地管理表空间以及⾃动段存储管理的表空间。
如果合理地设计这些特性,将来也就能最⼤限度得可接受到表性能 图1-1 逻辑存储于物理存储之间的关系图表是数据库中存储数据的对象。
数据库性能衡量的是应⽤能够以什么样的速度插⼊、更新、删除、和查询数据。
因此,此书就从优化表性能的攻略讲起。
本章⾸先介绍创建数据库和表空间时,可能会影响表性能的各⽅⾯因素,然后,讨论另外⼀些主题,⽐如根据于性能相关的业务需求,选择表类型和数据类型。
稍后介绍的主题包括管理表空间使⽤情况的物理实现⽅式。
本章还会详细介绍其他问题。
例如探测表碎⽚、处理位于⾼⽔位线下⽅的空闲空间、⾏链接以及数据压缩。
除此之外还会描述Oracle 段顾问(Oracle Segment Advisor ).这个⼯具很好⽤,能够帮助你⾃动探测并解决碎⽚和未使⽤的空间问题。
论Oracle数据库的性能优化问题

马 红 云
( 中国民用航 空大连 空中交通管理站 辽宁大连 1 1 6 0 3 3 )
摘要 : Or a c l e 数 据库作 为 目前适 用性 最好 的关 系数据库 引擎之 一, 能够 支持 各种业 务形式 、 处理各 种复 杂事务 , 得 到极 为广泛 的应 用。
1对数据库服务器 内存分配的调整
由于对服务器 内存参数 的调整对o r a c l e 的性能影响显著 , 它成 为O r a c l e  ̄据库性能调 优的首选对象。 服务器 内存参数 的调整主要 是对数据库系统全局 区的调整 , 系统全局 区包括共享池、 数据缓冲 区、 日志缓冲区 。 其 中最主要的是对数据缓冲区和共享池 的参数调
3 . 2表 的分 区和 并行 技 术
如果必须要在数据库运行特别耗时的操作。 应尽量地把这样的 操作分解 , 严格 限制操作所涉及的记录数 , 并设法使操作并行 , 充分 地提高 执行效率 。 ( 1 ) 使用分区 分区技术有两个潜在的好处: 提高查询性能和提 高数据 库可用性 。 数据库查询 时, 优化器知道那些分区包含查询所 要的数据 。 而其它分 区数据将不会被读取 , 从而查询 任务将更快完 成。 许 多 管 理 工 作 可 在 只 一个 分 区上 进 行 , 而 不 影 响 其它 分 区 的数 据。 例 如 可 以选 择 只 删 除一 个 表 分 区 中 的数 据 。 可对 表 分 区进 行 再 分割 , 把一个表分区迁移到不同的表 空间上 。 可只对 一个表分 区进 行分析 统计 。 表分区的这 些特性 。 ( 2 ) 使用并行 。 Or a c l e 数据库 中几乎 所有的操作都 支持 并行 特 性, 包括查询、 插入 、 和数据加载。 并行选项可 以使多个处理器 同时 处理一条命令 , 在创建库数据库对象 时可以设定 并行参数 , 也可在 查询语句 中重新设 。
Maclean Liu的Oracle性能优化讲座 第一回-真正读懂Oracle SQL执行计划Execution Plan

E-Rows 是优化器评估返回的行数 A-Rows 是实际执行时返回的行数
alter session set STATISTICS_LEVEL = TYPICAL;
使用DBMS_XPLAN包
Access Path访问路径分析:访问数据是用TableScan还是index (FFS) 对返回的行结果集做例如Join的进一步处理,以便返回行给客户端
SQL语句的执行最终会落实为Oracle执行步骤的组合 =》【SQL执行计划】
Oracle Database
内存
磁盘存 储
取出 加工結果
2. SQLPLUS AUTOTRACE • 除set autotrace traceonly explain外均实际执行SQL,但仍未必 是真实计划 • 必须要有plan_table 3. SQL TRACE • 需要启用10046或者SQL_TRACE • 一般用tkprof看的更清楚些,当然10046里本身也有执行计划信息
Email:liu.maclean@ Blog: Founder of Shanghai Oracle Users Group - SHOUG Over 7 years experience with Oracle RDBMS technology Over 8 years experience with Linux technology
How to Find Maclean Liu?
读懂执行计划有什么用呢?
执行计划贯穿Oracle调优始终 了解执行计划的真实执行过程,将有助 于优化 对于Oracle的原理理解有一定帮助 解决部分同学心中多年的疑惑 读懂执行计划,SQL调优的第一步
ORACLE 10G自动化特性在联通BSS系统性能优化工作中的应用

ORACLE 10G自动化特性在联通BSS系统性能优化工作中的应用摘要:在介绍Oracle 9i版本下性能优化的基本方法基础上,着重论述了Oracle 10g版本中的一些自动化特性,以及应用10g中的自动化特性进行数据库系统性能优化的方法和案例。
关键词:Oracle 自动化;10G 优化;ADDMOracle数据库是中国联通核心业务支撑系统中最主要的关系型数据库管理系统。
在联通BSS业务支撑系统的体系结构中,绝大多数的子系统都是典型的在线事务处理系统(OLTP系统),对业务处理的实时性和性能要求非常高。
基于以上情况,对Oralce数据库及BSS应用系统进行不断地性能调整和优化,就成为联通业务支撑工作中一个必不可少的关键性工作。
Oracle 10G中很多性能优化工作可以借助自动化的工具方便快捷地进行,使性能优化工作的效率和效果得以大幅提升。
1Oracle 9i环境下性能优化的典型方法和问题1.1Oracle 9i环境下典型的性能优化步骤通常情况下Oracle 9i环境下的性能优化工作的步骤如下:①用户或应用维护人员反馈:“某个应用场景下,系统反应很慢”;②数据库管理员(DBA)人工观测该应用是否确实比较慢,或者根据以往记录的性能测试数据来比较,确认该性能问题是否确实存在;③使用统计信息收集工具包-StatsPack包(以下简称SP 包),在可能会发生性能问题的时间段,进行性能统计信息搜集(即进行“snapshot快照”);④使用SP包,生成SP分析报告;⑤DBA阅读SP分析报告,结合自己的经验,手工在浩如烟海的信息中找到可能存在的性能瓶颈;⑥对于性能瓶颈,DBA结合自己的经验,手工设计优化方案;⑦DBA或应用系统开发人员,进行数据库配置、数据库对象或应用程序的调整;⑧调整完成后,再次进行性能表现的观测,如果问题没有得到解决,则再次从步骤三开始进行新一轮的过程,直至问题得以解决。
Oracle 9i时期典型的性能优化步骤的示意图如图1所示:图1Oracle9i时期典型的性能优化的步骤1.2Oracle 9i环境下性能优化方法存在的问题从上述步骤中可以明显看出,9i环境下的性能优化,均是DBA人工处理,所有的判断和决策都依靠人来开展,不仅非常耗时耗力,而且对进行优化工作的人员素质要求较高,对DBA 的“经验”要求极高,旺旺只有对业务较熟悉的DBA才能进行一些有效的优化工作。
优化SQL对ORACLE数据库性能的提高

3科技资讯科技资讯S I N &T NOLOGY I NFO RM TI ON 2008NO .28SC I EN CE &TECH NO LOG Y I N FOR M A TI O N 信息技术大多数情况下,系统运行缓慢不是由于所有部件都饱和引起的,而是由于系统中的某个部分限制了整体的性能,这部分称为瓶颈。
通常影响ORA CL E 数据库性能指标的三个瓶颈主要是:CP U 、内存、I /O 。
数据库性能的优化主要是or a c l e 数据库参数的调整、磁盘I /O 调整、应用程序S QL语句分析及设计、网络性能调整等。
本文主要通过优化S QL 语句来提高ORACL E 数据库的性能。
1SQ L 语句处理流程如图1所示。
1.1打开游标从上图可以看出处理S QL 语句的第一步就是要打开一个游标,事实上,一个完整的S QL 处理过程就是一个游标的生命周期。
1.2共享SQLOr a cl e 内存中有一个区叫SHA R ED _PO OL ,这个区的主要作用就是将S Q L 语句存放在这个区内,当客户发出一个新的S QL 语句,数据库引擎首先会到这个区查找是否有相同的S QL ,如果有,则避免了解析、分析索引、制定执行计划等一系列的动作。
如果没有则需要进行ha r d pa r s e 。
1.3绑定变量如果在S QL 中指定了绑定变量,需要在这个阶段给S QL 附上绑定变量的值。
1.4并行处理如果S Q L 需要进行并行处理,在这一阶段需要把整个S Q L 分割成多个并行的部分。
1.5执行查询Or a c l e 按照执行计划指定的方式执行SQL,执行UPDATE 和DE LE TE 语句时,必须将行锁定,以免其他用户修改。
Or a cl e 先从数据库缓冲区中寻找是否存在所要的数据块,如果存在,就直接读或修改,否则从物理文件中读到数据库缓冲区中。
1.6返回结果对S EL ECT 语句需要返回结果的语句,首先看是否需要排序,需要,则排序后返回给用户,然后根据内存的大小不同,可以一次取出一行数据,也可以一次取一组数据。
浅析Oracle大型数据库的性能优化

啊
I
浅析 O r a c l e大 型数据 库的性 能优化
刘 雅 琴
( 大庆 府 民物业 管理 有 限公司 ) [ 摘 要] 性 能优化 是 数据 库系统 维护 的重要 组成 部分 。 根 据对 O r a c l e  ̄ 据库 长期 的髓 测 与维 护经验 , 认真 分析 了O r a c l e  ̄ 运 行过 程 当中 出现 的各种 问题 , 提 出数据 库优 化 的若干 方 面的建 议 。 并 运用相 应 的处理 措施 , 保证 了O r a c l e  ̄ 据库 高 效地运 行 , 收 到 了非常 满意 的效果 。 [ 关键 词] Or a c l e 数 据 库 性 能优 化 系 统 输 出 中 图分 类号 : T P 文献 标识码 : A 文 章编号 : 1 0 0 9 —9 1 4 X( 2 0 1 3 ) 0 2 — 0 3 0 7 —0 1
经验 , 建 议不妨 针 对 以下几 个方 面加 以考虑 。 调 整数 据结 构 的设 计 对于 熟悉 软件工 程 的人来说 , 在 一个 系统 的生命周 期 内 , 对 数据结 构进 行 调整, 最 好在信 息 系统 开发之 前完 成 。 尽量 避 免在 系统 成型之 后再 进行 优化 。 这一 部分 , 需要 考虑使 用O r a c l e 数据 库 的分 区功能 , 将 动态 表 中的记 录分 离 到若 干不 同的表 空 间上 , 使数 据在物 理上被 分割 开来 , 便 于维 护 、 备份、 恢 复 及 进行 查询 。 当使 用 的时候 可建立 一个 连接所 有分 区的视 图, 使其 在逻辑 上仍 以一 个整体 出现 。 对于 经常访 问的数据 库表建 立索 引。 可 以提高查询 的性 能 , 减 少 了磁 盘 I / O, 优 化对 数据 表 的查询 , 加速s QL 语句 的 执行 。 二、 调整 数据 库服 务器 性 能 o r a c l e  ̄据 库服务器 是 整个系统 的核 心 。 它 的性 能高低 直接 影响了整 个系 统 的运 行 。 可 以使 用un i x 操 作系 统 的V ms t a t 、 I o s t a t 、 S a r 、 T o p  ̄命 令查 看 到系 - 统级 C P U、 内存 和硬 盘I / 0 等 的使 用情 况 , 这 些 工具能 够帮 助D B A弄清楚 系 统 瓶 颈 出现在什 么地方 。 为了调 整服务 器 的性能 , 我们主要 可 以从 以下几方 面考
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。
3.日志缓冲区 数据库管理员可以通过执行下述语句,查看日志缓冲区的
使用情况。
select name,value from v$sysstat where name in ('redo entries','redo log space requests'); 根据查询出的结果可以计算出日志缓冲区的申请失败率: 申请失败率=requests/entries 申请失败率应该接近于0,否则说明日志缓冲区开设太小,需 要增加Oracle数据库的日志缓冲区。
Oracle的性能 优化
第九章 Oracle的性能优化
本章学习目标 本章将介绍优化和调整Oracle数据库 系统的一些相关命令和方法。
本章内容安排
9.1 数据库性能优化概述 9.2 SQL语句的优化
9.3 Oracle运行环境的优化 9.4 并发事件处理 9.5 数据完整性 9.7 常见问题处理
共享SQL区的使用率应该在90%以上,否则需要增加共享 池的大小。
(2)数据库管理员可以执行下述语句,查看数据字典缓冲区 的使用率。
select (sum(-getmisses-usage-fixed))/sum (gets) "Row Cache" from v$rowcache;
数据字典缓冲区的使用率也应该在90%以上,否则需要 增加共享池的大小。
SELECT * FROM V$SYSSTAT WHERE NAME IN ('parse_time_cpu','parse_time_elapsed','parse _count_ hard');
这里: ①parse_time_cpu:是系统服务时间。 ②parse_time_elapsed:是响应时间。 而用户等待时间为:
9.1 数据库性能优化概述
9.1.1 数据库性能优化的内容 9.1.2 不同类型系统的优化
9.1.1 数据库性能优化的内容
(1)调整数据结构的设计。 (2)调整应用程序结构设计。 (3)调整数据库SQL语句。 (4)调整服务器内存分配。 (5)调整硬盘I/O,这一步是在信息系统开发之前完成的。 (6)调整操作系统参数。
3.查看Oracle数据库的冲突情况
数据库管理员可以通过v$system_event数据字典中的 “latch free”统计项查看Oracle数据库的冲突情况,如果没 有冲突的话,latch free查询出来没有结果。如果冲突太大 的话,数据库管理员可以降低spin_count参数值,来消除 高的CPU使用率。
9.3.2 物理I/O的调整
(1)在磁盘上建立数据文件前首先运行磁盘碎片整理程序
为了安全地整理磁盘碎片,需关闭打开数据文件的实 例,并且停止服务。如果有足够的连续磁盘空间建立数据文 件,那么就很容易避免数据文件产生碎片。
(2)不要使用磁盘压缩
Oracle数据文件不支持磁盘压缩。
(3)不要使用磁盘加密
关联查询的开销——对返回到父查询的记录来说,子查询会 每行执行一次。因此,必须保证任何可能的时候子查询用到索 引。
(2)在子查询中慎重使用IN或者NOT IN语句 在子查询中慎重使用IN或者NOT IN语句,使用where
(NOT)exists的效果要好的多。 ①带IN的关联子查询是多余的,因为IN子句和子查询中相 关的操作的功能是一样的。
1.共享池 共享池由两部分构成:共享SQL区和数据字典缓冲区。
共享SQL区是存放用户SQL命令的区域,数据字典缓冲区 存放数据库运行的动态信息。
(1)数据库管理员通过执行下述语句,来查看共享SQL区的使 用率。
select (sum(pins-reloads))/sum(pins) "Lib Cache" from v$librarycache;
2.数据缓冲区 数据库管理员可以通过下述语句,来查看数据库数据缓冲区
的使用情况。
SELECT name, FROM v$sysstat WHERE name IN ('db block gets','consistent gets','physical reads');
根据查询出来的结果可以计算出数据缓冲区的使用命中率:
9.3.5 Oracle碎片整理
1.碎片是如何产生的 2.碎片对系统的影响 (1)导致系统性能减弱 (2)浪费大量的表空间
3.自由范围的碎片计算 用fsfi——free space fragmentation index(自由空间碎片
索引)值来直观体现:
fsfi=100*sqrt(max(extent)/sum(extents))*1/ sqrt(sqrt(count(extents)))
9.3 Oracle运行环境的优化
9.3.1 内存结构的调整 9.3.2 物理I/O的调整 9.3.3 CPU的优化调整 9.3.4 网络配置的优化 9.3.5 Oracle碎片整理 9.3.6 Oracle系统参数的调整
9.3.1 内存结构的调整
内存参数的调整主要是指Oracle数据库的系统全局区 (SGA)的调整。SGA主要由三部分构成:共享池、数 据缓冲区、日志缓冲区。
系统的服务器,可以使用sar –u命令查看CPU的使用率;NT 操作系统的服务器,可以使用NT的性能管理器来查看CPU 的使用率。
出现CPU资源不足的情况是很多的:SQL语句的重解析、 低效率的SQL语句、锁冲突都会引起CPU资源不足。
2.查看SQL语句的解析情况 (1)数据库管理员可以执行下述语句来查看SQL语句的解析 情况:
4.SQL子查询的调整
(1)关联子查询和非关联子查询
非关联查询的开销——非关联查询时子查询只会执行一次, 而且结果是排序好的,并保存在一个Oracle的临时段中,其中的 每一个记录在返回时都会被父查询所引用。在子查询返回大量 的记录的情况下,将这些结果集排序,以及将临时数据段进行 排序会增加大量的系统开销。
4.CPU的优化调整方法 一些优化CPU使用和配置的具体方法有:
(1)取消屏幕保护。 (2)把系统配置为应用服务器。 (3)监视系统中消耗中断的硬件。 (4)保持最小的安全审计记录。 (5)在专用服务器上运行Oracle。 (6)禁止非必须的服务。
9.3.4 网络配置的优化
网络配置是性能调整的一项很重要的内容,而且很容易隐 藏性能瓶颈。 (1)配置网卡使用最快速度和有效模式 (2)删除不需要的网络协议 (3)优化网络协议绑定顺序 (4)为Oracle禁止或优化文件共享
②为非关联子查询指定EXISTS子句是不适当的,因为这样 会产生笛卡尔乘积。
③尽量不要使用NOT IN子句。
(3)慎重使用视图的联合查询
慎重使用视图的联合查询,尤其是比较复杂的视图之 间的联合查询。一般对视图的查询最好都分解为对数据表的 直接查询效果要好一些。
可以在参数文件中设置SHARED_POOL_RESERVED_SIZE参 数,这个参数在SGA共享池中保留一个连续的内存空间,连 续的内存空间有益于存放大的SQL程序包。
加密象磁盘压缩一样增加了一个处理层,降低磁盘读 写速度。如果担心自己的数据可能泄密,可以使用 dbms_obfuscation包和label security选择性地加密数据的敏感 部分。
(5)使用RAID
RAID的使用应注意:
①选择硬件RAID超过软件RAID;
②日志文件不要放在RAID 5卷上,因为RAID 5读性能高而写 性能差;
(4)调整PCTFREE和PCTUSED等存储参数优化插入、更 新或者删除等操作;
(5)考虑数据库的优化器;
(6)考虑数据表的全表扫描和在多个CPU的情况下考虑并 行查询。
9.2.2 SQL语句优化的具体方法 1.索引的使用
2.SQL语句排序优化 3. 选择联合查询的联合次序
4.SQL子查询的调整
2.SQL语句排序优化 排序发生的情况如下: SQL中包含group by 子句 SQL 中包含order by 子句 SQL 中包含 distinct 子句 SQL 中包含 minus 或 union操作
3.选择联合查询的联合次序
联合查询中如涉及到多个表的字段关联及查询,其 SQL查询语句联合次序的不同写法,会导致语句对各表具 体操作的步骤有不同的次序,所以虽然执行结果相同,但 执行效率却不同。
waite_time = parse_time_elapsed – parse_time_cpu 由此可以得到用户SQL语句平均解析等待时间: 用户SQL语句平均解析等待时间=waite_time/parse_count
(2)数据库管理员还可以通过下述语句,查看低效率的 SQL语句:
SELECT BUFFER_GETS,EXECUTIONS,SQL_TEXT FROM V$SQLAREA; 优化这些低效率的SQL语句也有助于提高CPU的利用率。
9.2 SQL语句的优化
9.2.1 SQL语句的优化规则 9.2.2 SQL语句优化的具体方法
9.2.1 SQL语句的优化规则
(1)去掉不必要的大表、全表扫描。不必要的大表、全表 扫描会造成不必要的输入输出,而且还会拖垮整个数据库;
(2)检查优化索引的使用 这对于提高查询速度来说非常重 要;
(3)检查子查询,考虑SQL子查询是否可以用简单连接的 方式进行重新书写;
(2)索引不起作用的情况 ①存在数据类型隐形转换 ②列上有数学运算 ③使用不等于(<>)运算 ④使用substr字符串函数 ⑤‘%’通配符在第一个字符 ⑥字符串连接(||)