技术开发 频道

调优DB2 v8.1及其数据库的非常好的实践

本文为您从 DB2® UDB 数据库及其应用程序那里获得非常好的性能提供了所需的帮助。作者联系实践,讨论了在开发的各个不同阶段以及对生产系统可以应用的一些技巧,包括数据库设计和布局、数据库配置、SQL 语句设计、维护以及监视等方面的技巧。

简介

性能是关系到随需应变型应用程序成功与否的关键。当那些应用程序使用 IBM® DB2 Universal Database™ 作为数据存储时,至关重要的是,从一开始就应该知道有关如何在 DB2 UDB 上取得尽可能好的性能的基础知识。在本文中,我将给出关于调优 DB2 UDB V8 系统的一些比较深入的建议。

我们将谈论这一过程中自始至终存在的性能问题。您可以遵循从创建一个新数据库到运行应用程序这之间的流程。通过本文可以看到如何使用 DB2 自动配置实用程序来初始配置数据库管理器和数据库环境。接着,我将讨论创建缓冲池、表空间、表和索引的非常好的实践。另外,您可能还想改变一些重要配置参数的初始值,以便更好地支持应用程序,因此我们还将简介这些配置参数。

我们将论述基于监视器(monitor)细节输出的调优,从而展示如何使用快照监视(snapshot monitoring)帮助调优 SQL、缓冲池和各种不同的数据库管理器以及数据库配置参数。接着,我们将进一步研究应用程序发送给 DB2 的 SQL。通过使用 Explain,可以生成 SQL 采用的访问计划(access plan),并寻找可以进一步优化的机会。我们将考察 Design Advisor 这样一个工具,它可以根据所提供的 SQL 负载推荐出新的索引,或者评估现有的索引。最后,我们还将讨论一些 DB2 SQL 选项。

此外,持续(on-going)维护对于维持非常好的性能非常重要。所以我们将讨论一些可以帮助我们进行持续维护的实用程序。对于那些正使用 DB2 ESE Database Partitioning Feature (DPF) 的读者,我会用一节的篇幅谈论为使数据库高效运行而应该考虑的一些问题。有时候可能会存在某种外在的瓶颈(来自 DB2)而使您无法达到性能目标,本文列出了一些常见的瓶颈,以及用于监视这些瓶颈的实用程序。最后,本文列出了一些有价值的 IBM 资源,以帮助您发现有价值的 DB2 信息。

本文是为那些在 DB2 数据库管理方面有中级技能的人而写的。

读前须知

在开始性能调优过程之前,应确保您已经应用了最新的 DB2 修订包(fix pack)。修订包常常会带来性能的提高。我们要使用 DB2 FixPak 4 作为本文的基础。如果您使用的是 FP4 之前的版本,那么这种环境可能不能提供这里讨论的所有选项。

在进行调优时,最好是有一个关于数据库使用(即应用程序运行在 DB2 上的工作负载)的可再现场景,这样就可以利用这种可再现场景来量身定制调优效果。例如,如果工作负载在不同的运行期间所经历的时间上有 10% 的变化量,那么就很难知道调优的真正效果如何。此外,如果在两次运行中各自的工作负载不一样,也就难于衡量数据库管理器和数据库配置参数所发生的变化。

坚持跟踪所有的变化。这样有助于开发调优脚本或者建议,以作为供其他 DBA 参考的历史,同时也有助于防止遵循不良的变化。

在大多数小节的最后,都有一些指向 DB2 v8 HTML Documentation 中相关小节的链接。在线文档可以在 http://publib.boulder.ibm.com/infocenter/db2help/index.jsp上找到。

“十大”性能增强推动器

做了下面十件事情,您就几乎可以使数据库获得非常好的性能。通常您会发现,通过大约 10% 的配置变化,就可以达到非常好的性能的 90%。我将在下面适当的小节(在圆括号中标出)中详细讨论其中的每一条:

确保有足够的磁盘(每个 CPU 有 6-10 个磁盘才是一个好的开端)。每个表空间的容器应该跨越所有可用的磁盘。有些表空间,例如 SYSCATSPACE 以及那些表数量不多的表空间,不需要展开到所有磁盘上,而那些具有大型用户或临时表的表空间则应该跨越所有磁盘。( 表空间)。
缓冲池应该占用可用内存的大约 75% (OLTP) 或 50% (OLAP)( 缓冲池)。
应该对所有表执行 runstats,包括系统编目表( Runstats)。
使用 Design Advisor 为 SQL 工作负载推荐索引和检查索引( Design Advisor)。
使用 Configuration Advisor 为应用程序环境配置数据库管理器和数据库( Configuration Advisor)。
日志记录应该在一个独立的高速驱动器上进行,该驱动器由 NEWLOGPATH 数据库配置参数指定( Experimenting)。
通过频繁的提交可以增加并发性( SQL 语句调优)。
应该增加 SORTHEAP,以避免排序溢出( DBM 和 DB 配置)。
对于系统编目表空间和临时表空间,表空间类型应该为 SMS,而对于其他表空间,表空间类型应为 DMS( raw device 或者是文件)。运行 db2empfa,以便支持用于 SMS 表空间的多页(multi-page )文件的空间分配。这将允许 SMS 表空间一次增长一个区段(Extend),而不是一页,从而可以加快那些大型的插入操作和溢出磁盘的排序操作( 表空间)。
对于重复的语句,使用参数标记 ( SQL 语句调优)。
 

创建数据库

创建一个数据库时,系统会缺省地创建 3 个系统管理存储(System Managed Storage,SMS) 表空间(SYSCATSPACE、TEMPSPACE1 和 USERSPACE),以及一个 4 MB 的缓冲池(IBMDEFAULTBP),这些表空间和缓冲池的页面大小都是 4 KB 。根据下面的建议,先删除 TEMPSPACE1 和 USERSPACE 然后再重新创建它们,通常这是一种可取的做法。几乎在所有情况下, SYSCATSPACE 都不需要再作进一步的优化,但是如果将其容器展开到几个磁盘上,性能上可能会有少量提升。( 稍后讨论)。

在创建数据库时,您可以利用自动配置选项来根据环境对数据库进行最初的配置。当应用程序以编程方式创建 DB2 数据库时,这样做很方便,因为可以将这些选项从应用程序提供给 DB2。在自动配置数据库时不得不用到的另一个选项是更强大的 Configuration Advisor GUI,它不但可以配置数据库,而且还可以配置实例。不过,要使用 Configuration Advisor,数据库必须首先存在。我们将在 随后的小节中讨论 Configuration Advisor。

在 清单 1中,我们使用 CREATE DATABASE 命令的自动配置选项在 Windows 中创建了一个数据库,该数据库有一个跨越两个可用磁盘的 SYSCATSPACE。

清单 1. 使用自动配置选项创建数据库

create database prod1 catalog tablespace 
    managed by system using ('c:\\proddb\\cattbs\\01','d:\\proddb\\cattbs\\02') 
    extentsize 16 prefetchsize 32 
    autocon图 using mem_percent 50 workload_type simple num_stmts 10 
        tpm 20 admin_priority performance num_local_apps 2 num_remote_apps 
        200 isolation CS bp_resizeable yes apply db and dbm

 

表 1显示了有效的自动配置输入关键字以及值:

表 1. 自动配置选项

关键字有效值缺省值描述
mem_percent1-10025分配给数据库的物理存储空间的百分比。如果本服务器(不包括操作系统)上运行有其他应用程序,那么将其设为小于 100 的某个值
workload_typesimple, mixed, complexmixedsimple 型工作负载倾向于 I/O 密集型,并且大多数是事务处理(OLTP),而 complex 型工作负载则倾向于 CPU 密集型,并且大多数是查询(OLAP/DSS)
num_stmts1-100000025每个工作单元包含的语句条数
tpm1-20000060每分钟的事务数。
admin_priorityperformance, recovery, bothboth优化以获得更好性能(每分钟更多的事务数)或更好的回复时间
num_local_apps0-50000连接的本地应用程序的数目
num_remote_apps0-5000100连接的远程应用程序的数目
isolationRR, RS, CS, URRR连接到该数据库的应用程序的隔离级别(Repeatable Read、Read Stability、Cursor Stability 和 Uncommitted Read)。
bp_resizeableyes, noyes是否可以在线更改缓冲池大小

Configuration Advisor

如果您在创建数据库的时候已经使用了自动配置,那么这一步就不是很重要了。Configuration Advisor 是一个 GUI 工具,它允许根据您针对一系列问题给出的回答自动配置数据库和实例。通过使用这种工具,常常可以取得相当可观的性能提升。这个工具可以从 Control Center 中通过右键单击数据库并选择 "Configuration Advisor" 来打开。当您回答完所有问题后,就可以生成结果,还可以选择应用结果。 图 1展示了结果页面的屏幕快照:


图 1. Configuration Advisor Results 屏幕
Configuration Advisor Results 屏幕
 

 

0
相关文章