使用db2top与db2advis优化数据库索引
本文主要介绍了如何在Unix/Linux环境下使用DB2性能监视工具db2top以及DB2优化器建议工具db2advis来生成和分析索引建议,以提升数据库性能。 在DB2数据库管理中,db2top是一个非常实用的命令行工具,用于实时监控数据库的性能状态,包括查询执行、锁、缓冲池等关键指标。在AIX 7.1及以上版本,DB2 9.7.0.61及更高版本中,db2top配置文件通常位于用户的家目录下(例如$HOME/.db2toprc)。通过编辑这个配置文件,可以定制db2top的行为,如设置最大内存大小(streamsize)和监控时长。 在开始使用db2top之前,可以先创建一个数据库快照,以便于后续分析。示例中,使用`db2top -d mydb -C -i 15 -m 20`命令启动db2top,参数说明如下: - `-d mydb` 指定要监控的数据库名称。 - `-C` 开启快照收集。 - `-i 15` 设置快照收集间隔为15秒。 - `-m 20` 设置最大监控时间为20分钟。 快照数据将被写入名为`db2snap-mydb-AIX64.bin`的文件中,用户可以选择是否创建命名管道代替文件。在收集到足够的数据后,可以停止db2top(通过按`CTRL+C`)。 接下来,利用db2advis工具对已执行的SQL语句进行分析,以获取可能的索引建议。在本例中,首先连接到数据库: ```bash db2connect to mydb user myuser using mypass ``` 然后,通过`db2-tf EXPLAIN.DDL`记录解释计划文件,这里假设已经有一个名为SQL的脚本文件。接着运行db2advis,给出如下参数: - `-d mydb` 指定数据库名。 - `-i ALL.sql` 指定包含SQL语句的文件。 - `-noxml` 输出非XML格式的结果。 - `-user myuser` 提供数据库用户名。 - `-pass mypass` 提供数据库密码。 - `-schema myuser` 指定要分析的模式或用户。 - `-2-5` 分析最近2到5天的SQL语句。 - `-m 2` 生成最多2个索引建议。 db2advis会分析历史SQL执行情况,基于执行次数、时间等因素,提出可能提高性能的索引策略。分析完成后,用户可以根据db2advis的建议,在实际环境中创建相应的索引,从而优化数据库的查询性能。 db2top和db2advis是DB2管理员在性能调优过程中不可或缺的工具,它们可以帮助识别性能瓶颈并提供改善方案。正确使用这两个工具,能够有效地提升数据库的运行效率和响应速度。
运行环境
AIX 7.1 + DB2 9.7.0.6
1.创建$HOME目录下的.db2toprc文件,增加内容如下,否则db2top运行时会报警
$ cat ~/.db2toprc
streamsize=2000M
2.运行db2top采集数据,间隔15秒,持续时间20分钟,生成跟踪文件
db2top -d mydb -C -i 15 -m 20
3.使用db2top对跟踪文件进行分析
db2top -d mydb -f db2snap-mydb-AIX64.bin -b l -A -L
4.在myuser下创建explain table
cd /home/MYUSER/sqllib/misc
db2 connect to mydb user myuser using mypass
db2 -tf EXPLAIN.DDL
5.使用db2advis对SQL文件进行分析,生成索引建议
db2advis -d mydb -i ALL.sql -noxml -user myuser/mypass -schema myuser
步骤2-5的运行记录:
步骤2
$ db2top -d mydb -C -i 15 -m 20
[17:16:33] Starting DB2 snapshot data collector, collection every 15 second(s), max duration 20 minute(s), max file growth/hour 100.0M, hit <CTRL+C> to cancel...
[17:16:33] Writing to 'db2snap-mydb-AIX64.bin', should I create a named pipe instead of a file [N/y]? n
[17:16:38] Creating 'db2snap-mydb-AIX64.bin' as a normal file
[17:16:53] 1.7M written, time 20.283, 315.4M/hour
[17:19:09] 5.2M written, time 155.821, 122.7M/hour
[17:20:09] 11.6M written, time 216.337, 193.9M/hour
[17:23:55] 13.4M written, time 442.204, 109.7M/hour
[17:25:10] 15.3M written, time 517.495, 106.6M/hour
[17:26:11] 17.1M written, time 577.729, 106.9M/hour
[17:28:26] 20.8M written, time 713.314, 105.2M/hour
[17:30:42] 24.5M written, time 848.855, 104.1M/hour
[17:32:57] 28.2M written, time 984.388, 103.2M/hour
[17:34:58] 31.8M written, time 1104.858, 103.9M/hour
[17:36:43] Max duration reached, 33.7M bytes, time was 1210.271...
[17:36:43] Snapshot data collection stored in 'db2snap-mydb-AIX64.bin'
Exiting...
步骤3
$ db2top -d mydb -f db2snap-mydb-AIX64.bin -b l -A -L
Analyzing objects doing the most 'Cpu%_Total' in function 'Sessions'
*** End of input stream reached, size was 35381589...
--
-- Top twenty performance report for 'Sessions' between 17:18:54 and 17:35:58
-- Sort criteria 'Cpu%_Total'
--
Rank Application_Handle(Stat) Percentage fromTime toTime sum(Cpu%_Total)
----- ------------------------------ ----------- -------- --------- ------------------------------
1 2998 26.8995% 17:18:54 17:35:58 107114
2 2010 25.1130% 17:18:54 17:35:58 100000
剩余7页未读,继续阅读
- 粉丝: 555
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 深入理解23种设计模式
- 制作与调试:声控开关电路详解
- 腾讯2008年软件开发笔试题解析
- WebService开发指南:从入门到精通
- 栈数据结构实现的密码设置算法
- 提升逻辑与英语能力:揭秘IBM笔试核心词汇及题型
- SOPC技术探索:理论与实践
- 计算图中节点介数中心性的函数
- 电子元器件详解:电阻、电容、电感与传感器
- MIT经典:统计自然语言处理基础
- CMD命令大全详解与实用指南
- 数据结构复习重点:逻辑结构与存储结构
- ACM算法必读书籍推荐:权威指南与实战解析
- Ubuntu命令行与终端:从Shell到rxvt-unicode
- 深入理解VC_MFC编程:窗口、类、消息处理与绘图
- AT89S52单片机实现的温湿度智能检测与控制系统