第1篇 性能定义及整体架构 2
第1章 DB2性能优化概述 2
1.1 性能目标 2
1.1.1 响应时间 4
1.1.2 吞吐量 5
1.2 工作负载类型 6
1.2.1 联机事务处理(OLTP) 6
1.2.2 联机分析处理(OLAP) 7
1.2.3 决策支持系统(DSS) 8
1.2.4 企业资源规划(ERP) 9
1.3 影响性能的因素 10
1.3.1 软件代码编写对性能的影响 12
1.3.2 应用程序架构设计对性能的影响 14
1.3.3 数据库设计对性能的影响 14
1.3.4 系统设计对性能的影响 27
1.4 本章小结 34
第2章 DB2架构介绍 36
2.1 DB2整体概况 36
2.1.1 DB2进程/线程体系简介 37
2.1.2 DB2 内存体系简介 41
2.1.3 DB2相关文件简介 42
2.2 DB2组件介绍 51
2.2.1 操作系统服务 52
2.2.2 基本系统调度 53
2.2.3 关系数据服务 58
2.2.4 数据管理服务 59
2.2.5 缓冲池服务 60
2.2.6 数据保护服务 63
2.3 SQL语句处理过程 65
2.3.1 数据查询语言(DQL) 66
2.3.2 数据操作语言(DML) 68
2.3.3 事务处理语言(TPL) 69
2.4 本章小结 70
第2篇 性能监控工具及监控技巧 72
第3章 性能监控工具 72
3.1 实时监控工具 72
3.1.1 db2trc 72
3.1.2 db2top 75
3.1.3 db2pd 77
3.2 历史监控工具 81
3.2.1 快照 81
3.2.2 快照视图及快照函数 83
3.2.3 事件监视器 86
3.3 DB2工作负载管理(DB2 Workload Manager) 87
3.3.1 标识阶段(Identification Stage) 88
3.3.2 管理阶段(Management Stage) 89
3.3.3 监控阶段(Monitoring Stage) 90
3.4 语句解释说明工具 94
3.4.1 db2exfmt 94
3.4.2 db2expln 102
3.4.3 语句解释说明工具对比 105
3.5 监控技巧 105
3.5.1 查找数据库中耗时最长的语句 107
3.5.2 分析特定语句的时间分布 108
3.5.3 捕获所有的SQL语句 111
3.6 本章小结 113
第3篇 性能分析及内部原理剖析 116
第4章 深入探讨优化器 116
4.1 语法语义分析 117
4.1.1 查询解析 117
4.1.2 语义检查 117
4.2 SQL语句重写 118
4.2.1 谓词简介 119
4.2.2 扫描方式 122
4.2.3 连接运算 125
4.2.4 查询重写 130
4.3 优化器编译 135
4.3.1 生成备选执行计划 135
4.3.2 基数评估 137
4.3.3 成本计算公式 156
4.3.4 生成可执行的代码 157
4.4 基数评估检查 157
4.4.1 通过COUNT语句检查基数评估 157
4.4.2 使用Section Actuals分析执行计划 162
4.5 本章小结 164
第5章 SQL语句性能优化之7种武器 165
5.1 长生剑——基本统计信息 165
5.1.1 统计信息收集方法 170
5.1.2 统计信息收集策略 171
5.2 碧玉刀——分布统计信息 172
5.3 孔雀翎——列组统计信息 177
5.4 离别钩——REOPT 182
5.4.1 REOPT处理机制 184
5.4.2 REOPT的启用方式及监控 187
5.5 多情环——静态视图 188
5.6 霸王枪——优化概要文件 193
5.6.1 优化概要文件的使用方法 194
5.6.2 优化概要文件规则 196
5.7 拳头——语句优化 199
5.8 本章小结 202
第6章 数据对象存储设计 203
6.1 表类型及设计方法 204
6.1.1 常规表 204
6.1.2 MDC表 205
6.1.3 分区表 212
6.1.4 MQT 214
6.1.5 表设计原则 217
6.2 索引类型及设计方法 220
6.2.1 索引的作用 220
6.2.2 索引创建原则 224
6.2.3 索引键顺序的选择 226
6.2.4 索引设计性能考虑 227
6.3 DB2设计顾问程序 228
6.3.1 战略性的索引创建 229
6.3.2 战略性的表类型选择 230
6.4 本章小结 232
第7章 DB2物理结构深入解析 233
7.1 表空间结构剖析 233
7.1.1 SMS(系统管理表空间)结构剖析 238
7.1.2 DMS(数据库管理表空间)结构剖析 240
7.1.3 高水位对于性能的影响 243
7.1.4 对容器进行重新平衡对性能的影响 246
7.2 数据页详解 247
7.2.1 数据页结构剖析 247
7.2.2 字段类型与行迁移 251
7.2.3 页重组 259
7.3 索引页详解 263
7.3.1 索引内部结构剖析 263
7.3.2 索引的分裂 266
7.3.3 索引维护和清除 269
7.4 日志文件结构剖析 273
7.5 本章小结 275
第8章 I/O管理及优化 276
8.1 数据I/O管理 277
8.1.1 缓冲池I/O原理 278
8.1.2 缓冲池逻辑读取 282
8.1.3 缓冲池物理读取 285
8.1.4 缓冲池写入操作 292
8.1.5 基于块的缓冲池I/O 297
8.1.6 缓冲池I/O监控 298
8.1.7 直接I/O管理 305
8.2 日志I/O管理 307
8.2.1 日志读取 308
8.2.2 日志写入 309
8.2.3 日志I/O原理 310
8.2.4 日志文件I/O相关调优参数 314
8.2.5 归档日志对I/O的影响 315
8.3 本章小结 319
第9章 内存管理 320
9.1 内存模型 320
9.1.1 实例共享内存 326
9.1.2 数据库共享内存 328
9.1.3 应用程序全局内存 335
9.1.4 代理程序私有内存 338
9.1.5 排序堆 339
9.1.6 其他内存区域 341
9.2 STMM 345
9.2.1 STMM 运行机制 345
9.2.2 STMM监控 347
9.3 如何定位及修复内存泄漏 348
9.3.1 内存泄漏诊断方法 348
9.3.2 内存泄漏的处理方法 350
9.4 本章小结 352
第10章 DB2等待事件 353
10.1 锁对象及兼容性 354
10.1.1 锁对象及锁模式 355
10.1.2 锁兼容性及锁转换 360
10.2 锁问题的监控与解决 361
10.2.1 锁事件监控 365
10.2.2 锁问题解决方法 370
10.2.3 锁案例分享 377
10.3 latch事件 381
10.3.1 latch监控 382
10.3.2 案例分析 383
10.4 本章小结 384
第4篇 实用工具调优及操作系统优化 386
第11章 实用工具调优 386
11.1 备份恢复工具 386
11.1.1 backup 386
11.1.2 restore 391
11.2 数据移动 392
11.2.1 export 392
11.2.2 import 394
11.2.3 load 396
11.3 其他管理工具 401
11.3.1 reorg 401
11.3.2 runstats 407
11.4 本章小结 409
第12章 操作系统相关问题 410
12.1 AIX 411
12.1.1 虚拟内存管理 411
12.1.2 磁盘及文件系统管理 417
12.1.3 网络调优参数 422
12.1.4 操作系统相关参数 423
12.1.5 系统监控工具 425
12.2 Windows 429
12.2.1 内存管理 429
12.2.2 磁盘及文件系统相关参数 432
12.2.3 系统监控工具 432
12.3 本章小结 435
第5篇 性能分析思路及优化总结 438
第13章 性能问题分析思路 438
13.1 响应时间问题 439
13.1.1 响应时间总结 439
13.1.2 通过快照进行分析 442
13.1.3 通过快照函数进行分析 444
13.2 资源占用问题 447
13.2.1 磁盘瓶颈 447
13.2.2 CPU瓶颈 450
13.2.3 内存瓶颈 455
13.3 本章小结 457