技术开发 频道

主流行式数据库评测:DB2 9.7企业版

   (2) 对实例和数据库的操作

  开始连接实例之前,必须存在多个实例。

  要使用命令行来与实例连接,输入:

    db2 attach to <instance name>

   例如,要连接至节点目录中先前编目的称为 testdb2 的实例:

    db2 attach to testdb2

   例如,在对 testdb2 实例执行维护活动后,要使用命令行从实例拆离,输入:

    db2 detach

   对于数据库的操作,除了前面提到过的create database和connect to,还有drop database命令删除数据库,terminate命令断开和数据库的连接。

  (3)db2命令行工具(CLP)

  通过前面的描述,大家对于它已经很熟悉了。它包括单行命令方式和交互方式。在2种方式之间可以共享当前状态,比如db2 connect 连接了数据库,那么db2进入交互方式后不用再次connect,同样在交互方式下设置了set schema当前模式,那么退出交互以后仍然生效。

  利用db2工具除了能够执行SQL语句,还可以完成数据库管理参数和数据库参数的动态配置,前者是实例级,后者是数据库级的。方法是:

db2 update dbm cfg using 参数名 参数值

db2
update db cfg using 参数名 参数值

   比如可以设置分区内并行和增加日志文件的大小。

--设置启用分区内并行功能
sh-3.2$ db2 UPDATE DBM CFG USING INTRA_PARALLEL YES
DB20000I  The
UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
-sh-3.2$ db2 UPDATE DBM CFG USING MAX_QUERYDEGREE 32
DB20000I  The
UPDATE DATABASE MANAGER CONFIGURATION command completed
successfully.
-sh-3.2$ db2 get dbm cfg|grep PARALLEL
Enable intra
-partition parallelism     (INTRA_PARALLEL) = YES
-sh-3.2$ db2 get dbm cfg|grep DEGREE
Maximum query degree
of parallelism   (MAX_QUERYDEGREE) = 32
-sh-3.2$ db2 get db cfg|grep DEGREE
Degree
of parallelism                      (DFT_DEGREE) = 1
-sh-3.2$ db2 update db cfg using DFT_DEGREE 4
DB20000I  The
UPDATE DATABASE CONFIGURATION command completed successfully.

--设置日志文件大小
-sh-3.2$ db2 update db cfg using LOGFILSIZ 2000
DB20000I  The
UPDATE DATABASE CONFIGURATION command completed successfully.
SQL1363W  One
or more of the parameters submitted for immediate modification
were
not changed dynamically. For these configuration parameters, all
applications must disconnect
from this database before the changes become
effective.
-sh-3.2$ db2 get db cfg |grep LOGFILSIZ
Log file size (4KB)                         (LOGFILSIZ) = 2000

   (4)db2batch批量测试工具

  这个是db2提供的专门用于基准测试的工具,基准测试是从各种不同方面(例如数据库响应时间、cpu 和内存使用情况)对应用程序进行评测的一个过程。基准测试基于一个可重复的环境,以便能够在相同的条件下运行相同的测试。之后,对测试收集到的结果可以进行评估和比较。

  db2batch以一组 SQL 和/或 XQuery 语句作为输入,动态地准备语句和描述语句,依次执行每个语句并返回一个报告。取决于命令中的选项,结果集可返回这些语句的执行时间、从准备到查询完成中各个阶段所花费的具体时间,CPU 时间,以及返回的记录关于内存使用情况(例如缓冲池)的数据库管理器快照和缓存信息。

  db2batch 命令格式

db2batch -d <db_name> -a <user>/<password> -i <time_condition> -f <sql.file> -r <output>

   对于执行 db2batch 时一些详细的设置可以通过 -o 参数指定,也可以在 SQL 文件中指定,譬如可以在1.sql文件中使用下面的配置参数:

--#SET ROWS_FETCH -1 ROWS_OUT 5 PERF_DETAIL 1 DELIMITER @ TIMESTAMP
select * from employee where empno='000340'@
--#COMMENT Query 2
--
#BGBLK [重复次数]
(定义查询块的开始)
select * from employee where empno='000350'@
--#EOBLK
(定义查询块的结束)

  其中 ROWS_FETCH 和 ROWS_OUT 定义了从查询的结果集中读取记录数和打印到输出文件中的记录数,PERF_DETAIL设置了收集性能信息的级别,DELIMITER 则指定了多个查询间的间隔符。如果用--#BGBLK和--#EOBLK定义执行块,那么最后的总结报告用块为单位统计,因此,若需要将每个SQL语句重复执行,那么必须在每个语句前后定义块。

  执行命令:

db2batch -d sample -i complete -f 1.sql -r 1.out

   db2batch还允许在输入文件中定义SQL程序块,并且可以定义这个块重复执行的次数,这个功能对于基准测试很有用,可以得出多次执行的平均值,消除一部分偶然性的影响。

  由于db2命令行没有提供类似Oracle的sqlplus的set timing on功能。利用显示系统时间,然后计算时间间隔的办法过于复杂,利用date;db2 …;date命令来显示命令执行前后的时间存在着同样的问题。这个工具恰好满足了我们的要求,所以下面的TPCH测试就主要利用这个工具进行。

0
相关文章