第1章 DB2体系架构 1
1.1 DB2体系架构概要 1
1.1.1 单节点DB2体系架构——组件模型 1
1.1.2 DB2静态和动态对象关系描述 6
1.1.3 DB2架构和各组件之间合作的实例 6
1.2 存储模型 9
1.2.1 存储模型概述 10
1.2.2 表空间 10
1.2.3 存储器组(Storage Group) 12
1.2.4 多温度存储器(Multi-temperature data storage) 13
1.2.5 教据压缩 15
1.2.6 列组织表 21
1.2.7 事务日志 26
1.2.8 存储性能优化要点 28
1.3 进程模型与应用执行过程分析 30
1.3.1 基本进程模型 30
1.3.2 DB2应用的执行过程 34
1.4 优化器 41
1.4.1 SQL语句编译过程 41
1.4.2 优化器评估条目概述 44
1.4.3 说明工具(Explain) 45
1.4.4 说明表(Explain Table) 46
1.5 多分区体系架构 47
1.5.1 多分区体系架构概述 47
1.5.2 DPF相关的概念 47
1.5.3 连接查询在分区数据库中的策略 52
1.5.4 快速通信管理器 55
1.5.5 DPF相关的一些命令 55
1.6 DB2 pureScale Feature简介 56
1.6.1 pureScale概述 56
1.6.2 配置集群高速缓存设施(CF) 58
1.6.3 页回收(Page reclaiming) 59
1.6.4 工作负载均衡(Workload Balance) 60
1.6.5 在pureScale环境中进行监控 63
1.6.6 pureScale环境的资源优化配置 67
第2章 DB2内存管理 70
2.1 内存概览 70
2.2 数据库管理器共享内存 71
2.2.1 实例(数据库管理器)共享内存 71
2.2.2 数据库共享内存 73
2.2.3 应用程序组共享内存 76
2.2.4 代理私有内存 78
2.2 共享内存与私有内存 79
2.3 STMM介绍 80
2.4 多分区下的内存管理特性 81
2.5 缓冲池管理 83
2.5.1 缓冲池使用方法 83
2.5.2 页清除程序代理程序 84
2.5.3 数据预取 84
2.5.4 缓冲池命中率 86
2.6 DB2 pureScale环境中内存管理 89
2.6.1 集群高速缓存设施 90
2.6.2 pureScale环境中的缓冲池命中速率和命中率 92
第3章 DB2锁机制 96
3.1 锁的概述 96
3.2 深入了解锁 97
3.2.1 锁的类型 97
3.2.2 锁兼容 98
3.2.3 影响锁定的因素 99
3.2.4 锁相关的问题 103
3.3 如何选择隔离级别和锁相关参数 105
3.3.1 隔离级别介绍 106
3.3.2 DB2注册变量 107
3.4 不可不知的新特性 107
3.4.1 乐观锁定 107
3.4.2 当前已落实 109
3.4.3 pureScale锁管理机制 110
3.5 实践锁监控工具的使用 117
3.5.1 锁等待监控 118
3.5.2 利用DB2PD捕获锁超时 119
3.5.3 利用事件监视器监视死锁 125
3.5.4 高级锁监控工具 126
第4章 DB2性能监控相关命令及参数 127
4.1 DB2性能相关参数 127
4.1.1 注册表参数 127
4.1.2 数据库管理器配置参数 131
4.1.3 数据库配置参数 133
4.2 性能监控调优相关命令介绍 139
4.2.1 Snapshot Monitor 139
4.2.2 db2top命令 143
4.2.3 Event monitor 150
4.2.4 表函数 155
4.2.5 db2pd命令 161
4.2.6 MONREPORT相关存储过程 165
第5章 DB2 SQL优化 171
5.1 理解SQL的执行计划 171
5.1.1 优化器概述 171
5.1.2 理解执行计划 173
5.1.3 使用db2look重新创建优化器访问计划 179
5.2 访问方法和连接方法 181
5.2.1 访问方法 181
5.2.2 连接方法 188
5.3 统计信息和成本估计 193
5.3.1 统计信息的分类:基数、频度和分位数 193
5.3.2 DB2如何根据统计信息进行成本估计 198
5.3.3 收集统计信息的方法和原则 204
5.3.4 统计视图(Statstical view)的设计 207
5.4 查询改写 211
5.4.1 缺失连接谓词 212
5.4.2 避免在查询语句返回列的列表处写“*” 212
5.4.3 连接谓词优化 212
5.4.4 避免可更新游标(Ambiguous Cursor) 213
5.5 访问计划的稳定性 213
5.5.1 复用执行计划 214
5.5.2 使用优化概要(Optimization Profile) 215
5.5.3 规则分类 215
5.5.4 优化概要的使用 218
5.5.5 优化概要示例 219
5.6 查询负载的调优 222
第6章 DB2图形化监控和优化工具 226
6.1 IBM Infosphere Optim Performance Manager简介 226
6.1.1 运行状况摘要仪表板 227
6.1.2 警报仪表板 228
6.1.3 当前表空间仪表板 231
6.1.4 概述仪表板 232
6.1.5 SQL语句仪表板 238
6.1.6 缓冲池和I/O仪表板 242
6.1.7 锁定仪表板 247
6.1.8 日志记录仪表板 250
6.1.9 内存仪表板 252
6.1.10 系统仪表板 255
6.1.11 实用程序仪表板 257
6.1.12 工作负载仪表板 259
6.1.13 连接仪表板 263
6.1.14 Extended Insight Analysis仪表板 266
6.1.15 生成预定义报告 272
6.1.16 生成跨数据库概述报告 276
6.1.17 配置Workload Manager 277
6.1.18 权限管理 281
6.2 IBM Optim Query Workload Tuner简介 282
6.2.1 定位:寻找优化目标 283
6.2.2 分析:寻找SQL性能优化方案 291
6.2.3 验证:验证优化方案 312
6.3 小结 326
第7章 DB2性能分析方法论与决策 327
7.1 DB2性能优化方法论 327
7.1.1 数据库系统性能优化方法学 327
7.1.2 DB2性能瓶颈分类决策树 329
7.1.3 分布式DB2架构的性能优化要点 335
7.2 DB2图形化性能监控优化工具实战方法 338
7.2.1 图形化性能管理工具方法分类 338
7.2.2 基于问题的性能分析流程 339
7.2.3 图形化工具快速指南及最佳实践 343
第8章 DB2性能分析案例实战 346
8.1 谁在影响我的业务 346
8.2 看谁涨得快 349
8.3 扫描的效率 352
8.4 交易量怎么变小了 356
8.5 消失的缓冲池 360
8.6 这么多的在线客户 363
8.7 升级到多分区后响应变慢 366
8.8 遥远的负载 376
8.9 收集统计信息为什么不生效 379
8.10 谁动了索引 382
8.11 结算系统塞车了 388
8.12 缓冲池命中率越高,I/O性能越好 396
8.13 诡异的SQL 401
8.14 没有分区表和物化视图怎么办 407
8.15 归档处理为什么会阻塞前端业务 414
8.16 配置Workload Manager监控系统瓶颈 418
8.17 负载均衡了吗 425
8.18 深入解析pureScale数据库缓冲池 427
8.19 分析pureScale数据库的显式分层锁定(EHL) 432
8.20 分析pureScale数据库的全局锁定(CFLOCK) 435
8.21 最优的索引到底怎么设计 438
8.22 抓取和调优工作负载的最佳实践 444
8.23 使用列组织表提高数据仓库查询性能 453
8.24 银行X升级数据库 456
附录A OPM答疑解惑 463
附录B OQW答疑解惑 494