数据库性能优化
在设计数据库时,必须确保数据库快速而正确地执行所有重要的函数。某些性能问题可以在数据库投入使用之后进行解决。但是,其他性能问题则可能是由于数据库设计较差导致的,并且只能通过更改数据库的结构和设计来解决。
在设计和实施数据库时,应该标识出数据库中较大的表和数据库将要执行的较为复杂的进程。在设计这些表时,您还应专门考虑其性能问题。此外,还应考虑能访问数据库的用户数的增加对性能的影响。
更改设计使性能提高的示例如下:
-
如果必须对有成千上万行的表编制摘要作为日常报表,可以向(包含预先聚合的仅供报表使用的数据的)表添加一列或多列。
-
数据库可能被过度规范化。这意味着数据库是由若干较小的相关的表定义的。当数据库处理这些表中的数据时,数据库必须执行非常多的工作量才能合并相关数据。这种额外的处理会降低数据库性能。在这种情况下,适当降低数据库规范化程度以简化复杂处理可以提高性能。
=============================================================
1、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。
2、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。
3、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
4、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。
5、调整硬盘I/O,这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。
6、调整操作系统参数,例如:运行在UNIX操作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。
硬件考虑事项
常,数据库越大,硬件要求越多。但是,其他决定因素还包括并发用户和会话的数量、事务吞吐量,以及数据库内的操作类型。例如,对于包含不常更新的学校图书馆数据的数据库,其硬件要求通常低于包含大公司经常分析的销售、产品和客户信息的 1 TB 数据仓库。除了磁盘存储要求,数据仓库还需要更多的内存和更快的处理器,以便能够在内存中缓存更多数据,使引用大量数据的查询处理得更快。
I/O 子系统或存储引擎是所有关系数据库的关键组件,需要进行大量的计划工作。成功的数据库实现通常要求在项目的初期阶段进行仔细的规划。此规划应考虑下列事项:
-
使用哪种类型的磁盘硬件,如 RAID(独立磁盘冗余阵列)设备。有关详细信息,请参阅关于基于硬件的解决方案。
-
如何将数据放置到磁盘上。有关详细信息,请参阅使用文件和文件组。
-
采用哪种索引设计来提高访问数据时的查询性能。有关详细信息,请参阅设计索引。
-
如何正确设置所有配置参数,以使数据库正常运行。有关详细信息,请参阅优化服务器性能。