大多数数据库应用都会遇到性能问题,这些性能问题包括很小的麻烦到严重的延误。我们无法回避这个现实。由于忽略了设计、查询的优化以及配置不当的数据库参数,肯定会出现性能问题。
性能问题的来源有以下分类:
一、争用问题
它是由不适当的系统设计、资源配置或者系统规范引起的,这些问题会导致性能的降低。争用可定义为两个或者更多的进程对相同资源的竞争。争用非为四种类型:输入、输出、文件、锁和锁存器。
二、资源消耗问题
是由低效率的代码引起的,这种代码消耗大部分或者全部系统内存或CPU资源。大多数性能问题都是由提交到数据库的不良查询引起的。
三、可伸缩性问题
它是由于工作负荷增加时,系统体系结构的设计没有相应提高所引起的。可伸缩性可定义为系统响应利用载荷来增加或者减少大小而不影响系统性能的能力。这对于涉及应用的所有人都是一个重要的问题。不能相应向上扩展的应用将降低系统性能,并最终使数据库降低到很慢的速度。
四、体系结构问题
这是由于缺陷的系统设计或者数据模型设计引起的。这些问题必然导致代价高昂的性能问题。过度规范化的数据模型也会降低性能。
五、应用问题
消耗资源的不良查询会降低系统的性能。其他应用问题可能来源于设计不良的用户界面、效率低下的批处理行为、业务规则实现不当、数据生效不当或者其他产生不一致数据的不当实现。
六、网络问题
它是由于系统生成的网络通信业务拥挤或者带宽不足,而不能满足处理正常通信的要求造成的。网络配置和方法对性能和网络的可用性产生重大影响。应当重视的是,大多数网络问题都有带宽和通信业务限制。换句话说,你必须确定网络能够处理期望的网络通信业务。
七、排序问题
它是由于发布了需要广泛排序的查询引起的。查询应当在内存中,而不是使用临时磁盘空间来执行排序。因为I/O行程的消耗非常高,所以必须为最希望的排序任务分配适当的内存。
八、连接问题
性能问题可能是由不适当的连接管理引起的。例如,当数据库应用经常断开连接再重新连接,而不是保持一个持续连接,直到应用终止。另一个示例是,应用使用管理所有用户连接的中间层,但是由于连接池打开,等待吹客户请求,因而没有正确地管理该连接。
九、分配问题
数据库管理员必须认识到,错误分配表空间和不恰当的表大小会导致严重的I/O争用和磁盘的过度读/写,这对于数据库的操作和性能可能是代价昂贵的。使用OFA和具有RAID的磁盘配置来提高或者防止I/O性能问题。
十、全表扫描问题
当数据库服务器扫描正个表以检索行时,会出现FULL TABLE SCAN问题。如果试图从大型表中检索行而不使用索引,FTS会降低系统的性能。小型表上的FTS不会对性能产生跗面影响。
十一、分析问题
它是由于不适当地定制内存大小,导致空间不足,无法缓存最常使用的查询引起的。其他原因包括使用绑定变量不当,设置实例参数不当以及缺少保证代码一致性的开发标准。
十二、索引问题
通常情况下,创建索引是为了提高查询的性能。索引是迅速检索数据的机制。如果索引在检索WHERE字句中使用的列时失败,那么数据库可能执行FTS。但是,依据表的大小、应用的类型和索引的类型,创建索引可能是一种性能负担。
十三、存储参数问题
在ORACLE中创建对象时,我们建议你指定为对象配置最佳空间分配的存储参数。这个规范将减少导致存储浪费或者分配不足,并最终导致性能问题的过度分配。