简介
在当今快节奏的世界中,只是完成工作是不够的。完成工作,并且要以最简便的方式完成工作,这才是关键。数据库世界也不能幸免这种对性能的渴求。客户希望能够迅速而有效地保存和提取其数据。在许多场合设置中,IBM 的 ® DB2® Universal DatabaseTM都拥有领先的性能跟踪记录,领先于众多的数据库竞争对手。
不幸的是,由于数据库或者配置中的某些设计缺陷,许多 DB2 用户可能无法获得 DB2 性能的所有益处。有许多关于 DB2 性能调整的文章和论文,DB2 中也有许多能够进行深入分析的好工具。我将在这篇文章中介绍一个工具 —— Apache 的 JMeter,这是另外一个可以添加到您的工具箱中的工具,它可以帮助您了解数据库的性能,还能帮助您进行模拟测试。
关于 Apache JMeter
JMeter 是 Apache Jakarta 项目麾下的一个产品。JMeter 是基于 JavaTMSwing 的桌面应用程序,是为进行负载测试、测量系统性能而设计的。最初,它是为测试 Web 应用程序而设计的。但是它后来进行了扩展,现在您已经可以用它来测试关系数据库了(通过 JDBCTM)。在 JMeter 的官方站点http://jakarta.apache.org/jmeter/上,您可以了解关于它的更多内容。
利用 JMeter,您可以确保您的数据库可以满足某些指标(例如能够处理一定数量的并发用户)。模拟测试是成功项目的关键。JMeter 可以针对 DB2 模拟出繁重的负载。这可以通过 JMeter 的多线程框架来实现。JMeter 的多线程框架允许大量线程进行并发采样。正如您将在本文后面看到的,JMeter 能为您提供图形化的反馈。
获得 JMeter 并设置您的测试环境
您可以从http://jakarta.apache.org/builds/jakarta-jmeter/release/下载 JMeter 的最新发行版。在我撰写这篇文章时,最新的 JMeter 版本是 1.8。JMeter 要求在 Sun 的 JDK1.4(或者更高)环境中工作。IBM JDK(指当前版本)似乎与 JMeter 不兼容。JMeter 已经在各种 UNIX® 变体 (包括 Solaris 和 Linux) 和 Windows®(98®、NT® 和 2000®)上通过了测试。
为了方便我们对 DB2 进行的 JDBC 测试,需要把 DB2 的 JDBC 驱动程序复制到<jmeter 安装目录>\jakarta-jmeter\lib目录下。对于 DB2 8.1 ,在默认安装情况下,DB2 驱动程序的位置是c:\program files\ibm\sqllib\java\db2java.zip。奇怪的是,如果 DB2 的 JDBC 驱动程序以 zip 文件命名,JMeter 将找不到 DB2 的 JDBC 驱动程序。要解决这个问题,您必须将文件名更改为.JAR文件。您可以把 lib 目录中的文件改名为db2java.jar。另一方面,如果想测试 DB2 8.1 Java Common Client (JCC) 驱动程序,只需将db2jcc.jar文件复制到 JMeter 的 lib 目录下即可(不用更改名称)。
在沙箱中放沙子
在我们开始使用 JMeter 之前,我们需要建立一个有一些测试数据的数据库。
在 DB2 的命令行处理器中输入以下内容: create db loaddb连接loaddb数据库,如下所示: connect to loaddb user db2admin using db2admin
建立一个表,保存我们的测试数据: create table loadtable (col1 varchar(25) not null, col2 varchar(25) not null, col3 varchar(25) not null)
用大量记录填充表,这样我们才能用 JMeter 来测试查询性能。我用了一个小小的 JDBC 程序来完成这项工作,在清单1中可以看到它,该程序将在可装入表中插入 30,000 条记录。然后编译并执行这段代码,用测试数据填充可装入表。
清单 1. 将记录插入数据库
现在我们有了相当数量的记录,让我们用 JMeter 来测试一下查询性能。
进入 JMeter
要启动 JMeter,需要运行<jmeter 安装目录 >\jakarta-jmeter\bin目录下的jmeter.bat文件。
当启动 JMeter 时,您会看到一个主屏幕,屏幕左边有一个面板,其中还没有定义测试计划(参见图 1)。在 JMeter 中,一个测试计划是由一个或多个线程组构成的。线程代表模拟用户,线程组(thread group)是一组模拟用户。
图 1. JMeter 的主屏幕
让我们从建立线程组开始。方法是右击TestPlan节点,选择Add => Thread Group。参见图 2。
图 2. 添加线程组
文章来源于领测软件测试网 https://www.ltesting.net/