十个最流行的Oracle性能指标,DBA必知

标签: 业界观察 Oracle性能指标 | 发表时间:2015-11-09 13:09 | 作者:techug
出处:http://www.vaikan.com

你在尝试提升你的数据库性能么?那么,这十个性能指标你必须要了解。

在评估你的Oracle数据库的KPI指标之前,你需要验证你的设想是否正确。这一点是最重要的。否则,你会像一个无头苍蝇,永远都找不到提升数据库性能的方法。因为你的设想本身就是错误的。你需要时刻关注哪些假设是错误的。这有有助于帮你了解Oracle是如何工作的,在哪些地方发生了改变。

如今,数据库是应用程序的灵魂。成千上万的企业都在使用Oracle当做本地数据的核心,基于云和混合的架构也是如此。从后台应用到日常商业数据统计,从战略分析报告到预测,都能看见数据库的身影。

随着Oracle数据库被大规模使用,你需要仔细监控性能水平,看是否还需要资源来支持部署。大家都不希望为了防止数据库的崩溃,而大量更改数据库配置或增加大量的服务器。那么,就需要经常留意整个数据库的KPI指标,找到它潜在的瓶颈和一些崩溃的迹象。

这里就来介绍一下我们需要知道的十个性能指标。

分配不足的RAM区域

大多数情况下,你可以依靠Oracle推荐的自动内存管理流程。有时候,你可以通过增加RAM使磁盘访问速度显著提升。但如果你不分配足够的内存用于SHARED_POOL_SIZE,PGA_AGGREGATE_TARGET和DB_CACHE_SIZE,那么你的数据库的物理I / O将会进度缓慢。

内存排序率

数据库运行缓慢是一个很让大家困扰的问题。因为磁盘排序必须在表空间,这远比在内存中排序要慢得多。

执行率分析

他们第一次执行时,必须解析SQL。其中包括语法检查,语义检查,决策树和执行计划,以便可以高效率的执行。执行计划会储存在缓存库中,下一次执行时会节省时间。解析包括硬解析和软解析,你需要同时简化这两个。硬解析是在运行初始时将全部SQL进行解析。软解析只解析变量。为了更好的执行解析比例,你需要增加session cache cursors(默认为50)。在100至1000的值中找到最佳的性能。

多余的嵌套循环联接

当你对迭代循环缓慢束手无策的时候,你需要深入到代码中找到更快的解决方案,而不是尽可能的使用嵌套循环联接。若还是没法解决,64位Oracle系统应该更适合你,因为他们有千兆字节的RAM排序和散列连接。要确保你有足够的RAM来让CBO通过设置PGA_AGGREGATE_TARGET参数选择散列连接,使其周转更快。

Page清除率

这个指标对于在线出版商和电子商务网页来说越来越重要。Page清除人员将旧的Page写入disk asynchronously中,以便新的Page可以被读入缓冲池。一个好的Page清除率是在95%左右。

缓冲池I / O的平均响应时间

/29/9a1a4312141c483393b38dd341e023de635817136754922878.jpg” alt=”” />

这时最终用户最感兴趣的一个东西。人们可以迅速的感觉到I / O响应瓶颈并进行抱怨。需要将缓冲池的平均读/写时间控制在10毫秒左右。

全表扫描

如果你看到全表扫描一致在持续进行着,那一定发生了严重的错误。网上交易和高容量操作都需要更高的工作效率。看看你的事务设计。搜索要命的索引和全面优化的SQL。如果你的全表扫描带回不到20%的表行,很可能有索引丢失。

事务日志响应时间

付款延迟,这是一个严重的问题。记录响应时间会对延迟产生很大的影响。需要使日志响应时间不超过10毫秒,就像缓冲池的I / O那样。

行读取/行选择的比例

这可以节省你的研究时间。它会告诉你在返回指定行之前数据库读取了多少行。如果这个比例高于20,则可能是创建索引的问题。你需要详细研究哪里的比例高于一般值。

人为错误

你没有看错,造成数据库问题的最大可能其实来自数据库管理者本身。例如,你可能忽略了监控数据库的STATSPACK/ AWR。还可能,你忘了在OEM业绩屏幕上设置自定义异常报告警报。一位智者曾经说过,“Man is the measure of all things.”不要忘了自检。

相关 [流行 oracle 性能] 推荐:

十个最流行的Oracle性能指标,DBA必知

- - 外刊IT评论
你在尝试提升你的数据库性能么. 那么,这十个性能指标你必须要了解. 在评估你的Oracle数据库的KPI指标之前,你需要验证你的设想是否正确. 否则,你会像一个无头苍蝇,永远都找不到提升数据库性能的方法. 你需要时刻关注哪些假设是错误的. 这有有助于帮你了解Oracle是如何工作的,在哪些地方发生了改变.

oracle性能优化

- - 行业应用 - ITeye博客
                              oracle数据库的性能优化. 主要从内部存储结构,逻辑分区,表结构范式,sql语句优化. hibernate处的层次更高,主要从缓存,和sql语句的使用.     对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整,最后一个调整级是SQL级.

Oracle SQL性能优化

- - 数据库 - ITeye博客
(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):. ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表. 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

oracle性能优化总结

- - Oracle - 数据库 - ITeye博客
oracle是一个很成熟的数据库产品,当然性能方面也有不俗的表现. 尤其是9i之后又做了很多好的改进. 现在已经到12c了,不过本人只用过11g,最近有时间了,我把自己对性能的一些拙见总结一下. (有一些是来自网上,自己又给整理了一下). ORACLE性能的体现主要在CPU利用率和I/O读写次数这两个方面.

Oracle SQL性能优化

- - 数据库 - ITeye博客
(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):. ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表. 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

查看Oracle性能差的SQL

- - Oracle - 数据库 - ITeye博客
1.查看总消耗时间最多的前10条SQL语句. 2.查看CPU消耗时间最多的前10条SQL语句. 3.查看消耗磁盘读取最多的前10条SQL语句. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

清除Oracle中无用索引 改善DML性能-性能调优-Oracle频道-中国IT实验室

- - Delicious/searchfull
DML性能低下,其中最严重的原因之一是无用索引的存在. 所有SQL的插入,更新和删除操作在它们需要在每一行数据被改变时修改大量索引的时候会变得更慢. 许多Oracle 管理人员只要看见在一个SQL 查询的WHERE语句出现了一列的话就会为它分配索引. 虽然这个方法能够让SQL运行得更快速,但是基于功能的Oracle 索引使得数据库管理人员有可能在数据表的行上过度分配索引.

一个InnoDB性能超过Oracle的调优Case

- - P.Linux Laboratory
年前抽空到兄弟公司支援了一下Oracle迁移MySQL的测试,本想把MySQL调优到接近Oracle的性能即可,但经过 @何_登成 @淘宝丁奇 @淘宝褚霸 @淘伯松 诸位大牛的指导和帮助(排名不分先后,仅按第一次为此CASE而骚扰的时间排序),不断修正方案,最终获得了比Oracle更好的性能,虽然是个特殊场景,但是我觉得意义是很广泛的,值得参考,遂记录于此.

[原]Linux HugePages 配置 与 Oracle 性能关系说明

- - David Dai -- Focus on Oracle
1.1 HugePages 介绍. 关于HugePages,有一些相关的专业术语,具体如下:. (1)  Page Table: A page table is thedata structure of a virtual memory system in an operating system to store themapping between virtual addresses and physical addresses.

oracle jdbc fetchsize取值对性能的影响

- - CSDN博客编程语言推荐文章
       通过JDBC取数据时,默认是10条数据取一次,即fetch size为10,如果增大这个数字可以减少客户端与oracle的往返,减少响应时间,网上有建议这个数字不要超过100,要不然对中间件内存消耗大(没有做过实验). String query_string = "SELECT * FROM test";//test有5万条记录.