简介
DB2 Universal Database(UDB)是第一个支持多媒体和Web的关系数据库管理系统,它的功能非常强大,足以满足大公司的需求,并且它非常灵活,足以满足中小企业的要求。DB2 产品系列软件和因特网技术的结合使我们可以方便地跨不同平台访问信息、使用信息并且保证信息安全。全世界有30 多万家公司的6000 多万个DB2 用户依赖于 IBM 数据管理解决方案。
DB2 UDB 为大多数需要电子商务的应用程序(比如电子商务、企业资源计划、客户关系管理、供应链管理、Web自助服务和商业智能)提供支持。这是一种可伸缩的、工业级数据库,非常适合用作电子商务发展过程中的数据管理基础。
联机事务处理(Online transaction processing,OLTP)是一类能为面向事务应用程序提供便利的应用程序,并可用来管理面向事务的应用程序,它通常用于处理许多行业的数据输入和检索事务,这些行业包括银行、航空、邮购、超市和制造业。通常,OLTP 工作负载包括许多并发运行的短事务。如今的联机事务处理日益要求支持跨网络以及可能包括多家公司的事务。因此,新的 OLTP 软件使用了客户机/服务器处理和代理软件,这种软件允许事务在一个网络的不同计算机平台上运行。
在任何一种数据库系统中,性能是最重要的因素之一。本文根据由运行 OLTP 类型的性能基准测试程序(TPC-C、TPC-W、Trade2 等)所得到的经验,着重讨论了许多 DB2 性能调优技巧。虽然数据库应用程序的性能会受许多因素影响,但是我们着重讨论配置而不是诸如容量规划、数据库设计或应用程序设计之类的因素。
本文的组织结构如下:
有关性能的一些基本要素
更新目录统计信息,这部分强调收集和维护最新数据库统计信息的重要性,缺少这项工作常常是导致许多性能问题的源头所在。
监控和调优数据库配置参数,这部分按照重要性的顺序描述了一列数据库管理器参数和数据库参数。通常,没必要尝试列表中的所有参数以实现性能目标。可以只尝试其中位于列表顶部的那几个,以查看是否有性能方面的改进。
有了这些技巧,就可以启动自己的 OLTP 应用程序并使其拥有非常好的运行性能。
有关性能的一些基本要素
有足够的内存。
对于 32 位系统,每个 CPU 至少使用 512 MB 的 RAM,最高可达每台机器 4 GB,以支持大量并发用户所需的缓冲池、DB2 代理程序和其它共享内存对象。(请参阅 “缓冲池大小(BUFFPAGE)”一节以获取有关缓冲池的更多信息。)可能需要更多的内存来支持在本地运行或作为存储过程运行的应用程序。在 AIX 上 JFS 文件高速缓存可以使用额外的内存来补充缓冲池。
对于 64 位系统,缓冲池实际上可以是任何大小。但是,对于使用大型数据库的大多数电子商务 OLTP 应用程序,缓冲池大小实际上不需要超过 8 GB。越大当然越好,但是在某一点,当缓冲池命中率达到 98+% 时,会随内存的增加命中率反而下降。并发用户的数目(它影响 DB2 代理程序的数量)决定需要多少内存。
每个用户连接至数据库(即 DB2 代理程序)所需的内存数量取决于应用程序所执行的 SQL 语句的性质 - 比如打开的并发游标数以及所需的排序和临时空间的数量。对于 OLTP 应用程序,所需的排序和临时空间会比较少,一次只打开少数并发游标。
经验:对于每个 DB2 代理程序,在 UNIX 中最少使用 1 MB 内存,在 Windows 中最少使用 500 KB 内存。如果使用了受防护的存储过程,那么除了运行存储过程应用程序所需的内存之外,每个用户连接还有两个 DB2 代理程序。
有足够的 I/O 处理能力。
必须有足够的磁盘设备来确保充分的 I/O 并行性,以支持大容量的并发事务。对于中等工作负载而言,每个 CPU 至少应当有 5 到 10 个磁盘,对于高 I/O OLTP 工作负载而言,至少要有 20 个磁盘。操作系统(包括调页空间)、DB2 日志和 DB2 表空间应当拥有各自的专用磁盘。应当有多个磁盘用于 DB2 日志、表和索引。
估计良好性能所需的 I/O 处理能力的正确方式,实际上是制作事务原型并找出每个事务需要多少 I/O,以及每秒需要处理多少事务。然后找出磁盘控制器和磁盘子系统的 I/O 速率以帮助确定需要多少控制器和磁盘。
有足够的网络带宽。
必须有足够大的网络带宽以支持工作负载。请确保网络或任何中间集线器都不会成为瓶颈。当支持远程访问时这一点尤为重要。例如,T1 线路支持 1.544 Mb/s,这仅为 0.193 MB/s,而通常的 10 Mb/s 以太局域网可以支持 1.25 MB/s,吞吐量为 T1 线路的 6 倍。在 UNIX 上使用诸如 netstat 这样的命令可以监控连接上的流量。
使用 DB2 控制中心(DB2 Control Center)的 DB2 性能配置向导(DB2 Performance Configuration Wizard)来设置初始的 DB2 数据库管理器(Database Manager)和数据库配置(Database Configuration)参数。
这个工具会询问您一系列有关工作负载性质的问题,以便确定配置参数值的起始设置。您可以修改这些参数以满足生产工作负载的需要。
适当地为表列建立索引。
确保查询中进行连接操作的列都有索引。
如果为 ORDER BY 和 GROUP BY 所涉及的列建立了索引,那么可以提高性能。
也可以将经常被访问的数据作为 INCLUDE 子句中的列包含在索引中。
根据所使用的表和 SQL 语句,使用索引顾问程序(Index Advisor)(也称为索引向导 (Index Wizard),可以从 DB2 控制中心调用该程序)来帮助确定使用一组合适的索引。