Oracle-调优的最终的目标是什么 (oracle数据库)

教程大全 2025-07-20 11:51:43 浏览

我们都知道 Oracle 现已成为世界上应用最为广泛的数据库。对于IT方面的人士来说,其实就是要确保及利用 Oracle 的十分强大相关特性来提高他们公司的生产力。最有效的方法之一是通过 Oracle 调优。

Oracle 调优是一个复杂的主题。关于Oracle调优可以写整整一本书,不过,为了改善 Oracle 数据库的性能,有一些基本的概念是每个 Oracle DBA 都应该遵从的。

在这篇简介中,我们将简要地介绍以下的 Oracle 主题:

外部调整:我们应该记住 Oracle 并不是单独运行的。因此我们将查看一下通过调整 Oracle 服务器 以得到高的性能。

Row re-sequencing 以减少磁盘 I/O :我们应该懂得 Oracle 调优最重要的目标是减少 I/O 。

Oracle SQL 调整。 Oracle SQL 调整是 Oracle 调整中最重要的领域之一,只要通过一些简单的 SQL 调优规则就可以大幅度地提升 SQL 语句的性能,这是一点都不奇怪的。

调整 Oracle 排序:排序对于 Oracle 性能也是有很大影响的。

调整 Oracle 的竞争:表和索引的参数设置对于 UPDATE 和 Insert 的性能有很大的影响。

我们首先从调整 Oracle 外部的环境开始。如果内存和 CPU 的资源不足的话,任何的 Oracle 调整都是没有帮助的。

外部的性能问题

Oracle 并不是单独运行的。 Oracle 数据库的性能和外部的环境有很大的关系。这些外部的条件包括有:

CPU–CPU 资源的不足令查询变慢。当查询超过了 Oracle 服务器的 CPU 性能时,你的数据库性能就受到 CPU 的限制。

内存 — 可用于 Oralce 的内存数量也会影响 SQL 的性能,特别是在数据缓冲和内存排序方面。

网络 — 大量的 Net8 通信令 SQL 的性能变慢。

许多新手都错误的认为应该首先调整 Oracle 数据库,而不是先确认外部资源是否足够。实际上,如果外部环境出现瓶颈,再多的 Oracle 调整都是没有帮助的。

在检查 Oracle调优 的外部环境时,有两个方面是需要注意的:

1 、当运行队列的数目超过服务器的 CPU 数量时,服务器的性能就会受到 CPU 的限制。补救的方法是为服务器增加额外的 CPU 或者关闭需要很多处理资源的组件,例如 Oracle Parallel Query 。

2 、内存分页。当内存分页时,内存容量已经不足,而内存页是与磁盘上的交换区进行交互的。补救的方法是增加更多的内存,减少 Oracle SGA 的大小,或者关闭 Oracle 的多线程服务器。

oracle数据库

可以使用各种标准的服务器工具来得到服务器的统计数据,例如 vmstat,glance,top 和 sar 。 DBA 的目标是确保数据库服务器拥有足够的 CPU 和内存资源来处理 Oracle 的请求。

以下让我们来看一下 Oracle 的 row-resequencing 是如何能够极大地减少磁盘 I/O 的。

Row-resequencing (行的重新排序)

就象我们上面提到的,有经验的 Oracle DBA 都知道 I/O 是响应时间的***组成部分。其中磁盘 I/O 特别厉害,因为当 Oracle 调优由磁盘上的一个数据文件得到一个数据块时,读的进程就必须等待物理 I/O 操作完成。磁盘操作要比数据缓冲慢 10,000 倍。因此,如果可以令 I/O 最小化,或者减少由于磁盘上的文件竞争而带来的瓶颈,就可以大大地改善 Oracle 数据库的性能。

如果系统响应很慢,通过减少磁盘 I/O 就可以有一个很快的改善。如果在一个事务中通过按一定的范围搜索 primary-key 索引来访问表,那么重新以 CTAS 的方法组织表将是你减少 I/O 的首要策略。通过在物理上将行排序为和 primary-key 索引一样的顺序,就可以加快获得数据的速度。

就象磁盘的负载平衡一样,行的重新排序也是很简单的,而且也很快。通过与其它的 DBA 管理技巧一起使用,就可以在高 I/O 的系统中大大地减少响应的时间。

在高容量的在线事务处理环境中( online transaction processing , OLTP ),数据是由一个 primary 索引得到的,重新排序表格的行就可以令连续块的顺序和它们的 primary 索引一样,这样就可以在索引驱动的表格查询中,减少物理 I/O 并且改善响应时间。这个技巧仅在应用选择多行的时候有用,或者在使用索引范围搜索和应用发出多个查询来得到连续的 key 时有效。对于随机的唯一 primary-key (主键)的访问将不会由行重新排序中得到好处。

让我们看一下它是如何工作的。考虑以下的一个 SQL 的查询,它使用一个索引来得到 100 行:

这个查询将会使用 last_name_index ,搜索其中的每一行来得到目标行。这个查询将会至少使用 100 次物理磁盘的读取,因为 employee 的行存放在不同的数据块中。

不过,如果表中的行已经重新排序为和 last_name_index 的一样,同样的查询又会怎样处理呢?我们可以看到这个查询只需要三次的磁盘 I/O 就读完全部 100 个员工的资料(一次用作索引的读取,两次用作数据块的读取),减少了 97 次的块读取。

重新排序带来的性能改善的程度在于在你开始的时候行的乱序性如何,以及你需要由序列中访问多少行。至于一个表中的行与索引的排序键的匹配程度,可以查看数据字典中的 dba_indexes 和 dba_tables 视图得到。

在 dba_indexes 的视图中,查看 clustering_factor 列。如果 clustering_factor 的值和表中的块数目大致一样,那么你的表和索引的顺序是一样的。不过,如果 clustering_factor 的值接近表中的行数目,那就表明表格中的行和索引的顺序是不一样的。

行重新排序的作用是不可以小看的。在需要进行大范围的索引搜索的大表中,行重新排序可以令查询的性能提高三倍。

一旦你已经决定重新排序表中的行,你可以使用以下的工具之一来重新组织表格。

使用 Oracle调优 的 CREATE Table As Select (CTAS) 语法来拷贝表格

文章出自:

【编辑推荐】


一个页面,About.asp?id=15 是这样的,还有两个其它页面 以About.asp?id=3 或4 是调用数据库不同的内容,

广告随机显示模式可以有以下几种:1、根据ID传参判断显示哪张广告,也就是说:当ID在什么范围内,显示某张图片,在另一范围内,显示其它某张图片;2、由于你的广告图片有限,所以当ID范围很大时(如:1-100)无法根据ID值对应来显示广告图片,因为没那么多广告图片。 这时只能是纯随机显示广告图片了,HEAD页在加载时初始一个随机数,然后显示随机图片。

数学应用题:某大型购物中心,特推出一种优惠活动:购买100元的优惠卡后,凭优惠卡全场9折。假如你去该购物中心购物,请给定一个合理的计划,在哪种情况下购物较为优惠?

解:设买x元的商品。

0.9(x+100)

答:买900元以下的商品,不用优惠卡实惠。 买900元以上的商品,用优惠卡更实惠。

探究海波熔化的实验中,把盛有海波的试管放入盛有水的的烧杯中加热,而不直接用酒精灯加热。目的和方法是

为了使烧杯中的海波受热均匀。 。 这种方法叫水浴法 先在一个大容器里加上水,然后把要加热的容器放入加入水的容器中。 加热盛水的大容器通过加热大容器里的水再通过水把热量传入需要加热的容器里,达到加热的目的。 优点是使物体受热均匀,减慢熔化过程,便于观察。 部分试验中不会导致暴沸的现象

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐