* 性能问题的根源分析
* 根本原因通常是难以理解的
* 过多的强调平台的性能调整和初始化文件的的调整
* 这些调整带来的提高小于10%. 一个好的性能调优工程师总是在追求获得最大的性能提高
* 没有足够地关注SQL 语句的调整( optimization and quality )
* 性能问题常常被认为是神秘和困难的.
APM相关的技术领域
* 当前的趋势是数据库的设计工作量和大量的廉价硬件来解决问题
* 这意味着要有良好的容量规划尤其是在I/O方面
* 在很多案例中许多Oracle先进的特性特意没有被使用和开发出来
* Oracle作为单一的套装软件供应商做了很多客户应该做的规划和打包工作而受到诘难
* Oracle很多客户天真地认为大表的扫描操作可以通过硬件的提高来满足要求
Oracle数据库性能现状
* 现在大多数数据库系统的在编码阶段已经优化,其性能可以满足客户的需求
* 为什么?
* CPU的处理能力不断增长
* 64-bit 计算和内存价格的降低
* 即使低效率的应用都可以在内存中运行
关于预测方法
根据以上讨论,尤其是需求与竞争之间的关系,我们预测 Oracle 性能问题的方式有两种:
* 识别出以增长的速率消耗资源或在一段时间内表现出响应时间变慢的 SQL 语句。对于这些 SQL 语句,根据发展趋势识别出需要现在进行调整的 SQL,以避免将来出现问题。
* 识别出接近容量极限以及以后会形成瓶颈的数据库资源(锁、锁存器、I/O 通道等)。这些资源需要增加容量或提高利用率以达到计划的需求。
预测模型:为何少即是多
竞争及其影响
当两个或更多 Oracle 会话想要使用某一资源,但该资源上某种形式的限制阻止这样做时便产生了竞争。通常这些限制与并发性相关,即有关多少会话可同时使用某一资源的限制。会话就资源的使用进行竞争,并且其中至少一个会话的处理将被延迟,而必须等待资源变为可用状态。
竞争对性能具有双重影响:
* 竞争可减少数据库可处理的工作量。例如,锁竞争可减少每秒可执行的 SQL 语句数量。
* 竞争可减少系统其他部分的负载量。例如,锁竞争可实际减少 /O 需求,消除锁竞争可能导致磁盘上负载的增加。
图 3 描绘了竞争的影响。数据库处理应用程序需求的能力限制反而可使需求下降到较低的水平。实际上,这意味着竞争可减少 I/O 子系统上的需求。
由于本文旨在探讨Java"异常机制"的深层原理,因此关于"异常"的使用方法都不做详细说明。首先看一段非常熟悉的用于打开一个文件的C程序段:
FILE *fp;
fp=fopen(filename,"rw");
if(fp==NULL){
printf("cannot open file\n");
exit(0);
}
SQL 语言明显是非过程化的语言:您只需指定想要的数据,而不必关心如何获取数据。数据库优化器将决定获取所需数据的最佳方式。然而,优化器并不是完美的,开发人员或 DBA 经常需要对欠佳的优化器决策进行更正。并且优化器不能对数据库设计或实施缺陷(例如缺少索引)加以弥补。
数据库在客户端-服务器时代具有非常显著的地位,但现今其中心地位已有所淡化。它们仅构成三个重要架构层的其中之一,不仅已高度商品化,而且很少并入内置业务逻辑。然而,数据库仍对应用程序的性能起着至关重要的作用,其中有两大主要原因:
* 只有数据库需要用来执行大量的物理磁盘 I/O,而现今的磁盘 I/O(相对于磁盘大小和 CPU 速度)比过 去更为关键。