提高DB2查询性能的常用方法
2010-02-16 14:59:59 来源:WEB开发网图4中的统计信息主要包括此FETCH操作的总代价,CPU,I/O以及获得结果集中的第一行的代价。在这里,timerons是结合了CPU和I/O 代价的成本单位。此外,图4中还收集了其他相关信息。譬如此操作读取了哪个表的哪些列,每个谓词的选择度 (selectivity),使用了多少 buffer 等等。
db2exfmt
db2exfmt命令能够将Explain表中存储的存取计划信息以文本的形式进行格式化输出。db2exfmt命令将各项信息更为直观的显示,使用起来更加方便。命令如清单1 所示:
清单1.db2exfmt命令
db2exfmt -d <db_name> -e <schema> -g T -o <output> -u <user> <password> -w <timestamp>
Example: db2exfmt -d test_db -e user -g T -o D:tempsql_1_result_db2exfmt.txt
-u user password -w l
Query:
sql_1.txt(附件中)
Results:
sql_1_result_db2exfmt.txt(附件中)
db2expln
db2expln是命令行下的解释工具,和前面介绍的Visual Explain 功能相似。通过该命令可以获得文本形式的查询计划。命令如清单2 所示 :
清单2.db2expln命令
db2expln -d <db_name> -user <user> <password> -stmtfile <sql.file>
-z @ -output <output> -g
Example: db2expln -d test_db -user user password -stmtfile D:tempsql_1.txt
-z @ -output D:tempsql_1_result_db2expln.txt –g
Query:
sql_1.txt(附件中)
Results:
sql_1_result_db2expln.txt(附件中)
db2expln 将存取计划以文本形式输出,它只提供存取计划中主要的信息,并不包含每一个操作占用多少 CPU、I/O、占用Buffer 的大小以及使用的数据库对象等信息,方便阅读。但是 db2expln 也会将各项有关存取计划的信息存入 Explain表中,用户可以使用db2exfmt 察看详细的格式化文本信息。
db2advis
db2advis是 DB2提供的另外一种非常有用的命令。通过该命令 DB2可以根据优化器的配置以及机器性能给出提高查询性能的建议。这种建议主要集中于如何创建索引,这些索引可以降低多少查询代价,需要创建哪些表或者 Materialized Query Table(MQT) 等。命令如清单3 所示:
清单3.db2advis命令
db2advis -d <db_name> -a <user>/<password> -i <sql.file> -o <output>
Example: db2advis -d test_db -a user/password
-i D:tempsql_2.txt > D:tempsql_2_result_db2advis.txt
Query:
sql_2.txt(附件中)
Results:
sql_2_result_db2advis.txt(附件中)
更多精彩
赞助商链接