对于技术学习来说,是由理论学习和实际操作两个方面,在这两个方面的学习过程中,了解、学习、借鉴一些业内“大牛”的经历和思路对于自己的学习提高是非常有好处的。
通过自己的经验,需要想要全面了解和接触一门技术,先通过一本该门技术的经典书籍,让自己建立框架,现有一个整体的认识,然后逐步细化和研究其细节,并通过实验加以操作和验证,是掌握技术理论和获得实践能力的一种行之有效的途径。
由此,自己打算对于自己有启发和帮助作用的书籍,逐步将其主要内容整理成博文,写出自己的分析和思考,分享出来,作为自己学习和技术提高的一种方式。
对于DB2数据库方面,对我影响比较大的是王飞鹏老师,我参加过几次王老师的课程,也读过王老师写的书,这些对自己DB2数据库方面的入门有很大帮助。王老师的DB2系列书籍主要有四本,主要内容和自己的思考分别如下。
******************************************************
《DB2设计与性能优化-原理.方法与实践 》
内容简介
本书原汁原味地展示了DB2设计和优化技术,深入剖析了DB2的工作原理。全书分为4部分,共11章。
第一部分解析数据库性能的本质问题。第二部分从设计高性能数据库的角度,详细介绍如何使用DB2数据库设计高质量的应用系统,内容包括
DB2数据库逻辑设计、DB2数据库物理设计、DB2pureXML数据库设计及DB2工作负载设计。第三部分介绍如何优化DB2数据库,内容包括性能监控
及参数调整、SQL语句优化策略、锁和日志优化等。第四部分阐述DB2高级性能加速技术,主要包括DB2pureScale集群和solidDB高速缓存加速
。
附录部分列出了常用监控命令用法和缩略语释义,还特别提供了PAT树的放大图,供读者进行数据库性能优化时使用。
读者对象:本书适合DB2数据库设计人员、DBA、数据库性能分析人员、数据库开发人员、运维人员及应用开发工程师阅读和参考,也可用做高
校相关专业或培训班的教材。
目录
第一部分 DB2基础
第1章 我看DB2设计与优化
1.1 数据库设计与性能优化
1.1.1 收集需求
1.1.2 设计概念模型
1.1.3 设计逻辑结构
1.1.4 设计物理结构
1.1.5 实施、运行和维护阶段
1.2 性能问题
1.2.1 什么是性能问题
1.2.2 为系统做性能基准测试
1.2.3 制订性能优化目标
1.2.4 把问题分类
1.3 使用PAT方法学解决问题
1.3.1 什么是PAT方法学
1.3.2 PAT方法学优化策略
1.3.3 使用PAT方法学
1.3.4 使用PAT方法学的步骤
1.3.5 PAT树使用建议
1.4 小结
第2章 性能优化利器——PAT方法
2.1 优化步骤
2.2 业务分析
2.2.1 经营分析系统的架构
2.2.2 性能问题的提出
2.3 系统分析
2.3.1 硬件和操作系统
2.3.2 数据库物理设计
2.3.3 分析结果
2.4 制订优化计划
2.4.1 优化计划安排
2.4.2 实践优化策略
2.5 使用PAT方法
2.5.1 优化“每天下午系统响应慢”问题(Perf_SlowAfterNoon_Sys)
2.5.2 优化“大数据转入”问题(Perf_Load_App)
2.5.3 优化“客户流失分析”问题(Perf_Customer_App)
2.5.4 优化“账户资费”问题(Perf_ACC_App)
2.5.5 优化“数据质量管理”问题(Perf_Data_App)
2.5.6 优化“系统逐渐变慢”问题(Perf_SlowDown_Sys)
2.5.7 优化总结
2.6 小结
第二部分 DB2数据库设计
第3章 高质量逻辑设计 48
3.1 常规表设计 49
3.1.1 表设计的原则 49
3.1.2 列定义原则 52
3.1.3 数据完整性设计 53
3.1.4 其他考虑因素 54
3.2 索引设计 56
3.2.1 索引的概念 56
3.2.2 深入解析索引原理 60
3.2.3 创建索引 67
3.2.4 索引设计原则 67
3.2.5 索引维护 70
3.3 MDC表设计 71
3.3.1 多维群集(MDC) 71
3.3.2 块索引 72
3.3.3 MDC表的优势 73
3.3.4 MDC表设计原则 74
3.4 表分区设计 76
3.4.1 分区表 76
3.4.2 分区表索引 78
3.4.3 转入转出 80
3.4.4 案例分析 82
3.5 DPF设计 83
3.5.1 数据库分区 83
3.5.2 数据库分区组 87
3.5.3 DPF设计原则 88
3.5.4 MDC、DPF和表分区 90
3.6 MQT表设计 91
3.6.1 MQT表介绍 91
3.6.2 MQT表适用范围 93
3.6.3 MQT表设计原则 93
3.6.4 MQT表设计示例 94
3.7 临时表设计 95
3.7.1 全局临时表(CGTT/DGTT) 95
3.7.2 临时表设计 96
3.7.3 设计示例 97
3.8 小结 98
第4章 高质量物理设计 100
4.1 物理设计 101
4.1.1 确定数据库的物理结构 101
4.1.2 评价物理结构 102
4.2 设置和管理CPU 103
4.2.1 DB2的并行处理SMP 103
4.2.2 DB2的并行处理MPP 104
4.2.3 SMP集群(SMP+MPP) 105
4.3 设置和管理I/O 106
4.3.1 磁盘和存储设计 107
4.3.2 磁盘阵列技术 109
4.3.3 条带化 111
4.3.4 I/O相关配置参数 113
4.3.5 I/O存储设计小结 114
4.3.6 I/O设计范例 116
4.4 表空间设计 116
4.4.1 表空间概念 116
4.4.2 表空间类型 117
4.4.3 表空间设计总结 119
4.4.4 表空间设计范例 127
4.5 设置和管理内存 128
4.5.1 内存 128
4.5.2 缓冲池设计 134
4.5.3 STMM内存自动管理 140
4.6 数据压缩 143
4.6.1 压缩的重要性 143
4.6.2 压缩的种类 144
4.7 小结 146
第5章 pureXML数据库设计 149
5.1 DB2 pureXML 150
5.1.1 pureXML之风采 150
5.1.2 XML存储 151
5.1.3 XQuery与SQL/XML 153
5.1.4 XML Schema 157
5.2 XML索引 159
5.2.1 XML索引类型 159
5.2.2 创建索引 160
5.2.3 XML索引优化 161
5.3 使用pureXML设计高效的数据库 164
5.3.1 动态表单类设计 164
5.3.2 元数据类设计 165
5.3.3 数据交换类设计 166
5.3.4 社交网络类设计 167
5.4 XML数据库的性能优化 168
5.5 小结 170
第6章 工作负载设计 172
6.1 DB2工作负载介绍 173
6.2 工作负载管理器组件 176
6.2.1 工作负载 176
6.2.2 服务类 178
6.2.3 阈值 180
6.2.4 工作类集合和工作操作集合 182
6.2.5 DB2和AIX / Linux WLM 185
6.2.6 小结 186
6.3 WLM监控 187
6.3.1 监控环境 187
6.3.2 工作负载监控示例 189
6.4 设计DB2工作负载 193
6.5 工作负载范例 194
6.6 小结 195
第三部分 DB2数据库性能优化
第7章 DB2配置优化与监控 197
7.1 配置参数优化 198
7.1.1 操作系统参数优化 198
7.1.2 DBM参数优化 199
7.1.3 DB参数优化 201
7.1.4 注册变量优化 207
7.1.5 常见问题总结 207
7.2 性能监控的途径 209
7.2.1 快照监控 209
7.2.2 事件监控 216
7.2.3 db2pd监控 219
7.3 新监控框架 222
7.3.1 表函数 222
7.3.2 管理视图 225
7.4 系统监控的方法 227
7.4.1 CPU监控 227
7.4.2 内存监控 230
7.4.3 I/O监控 233
7.5 DB2高级监控工具 236
7.5.1 db2top 236
7.5.2 Data Studio管理控制台 237
7.5.3 Optim性能管理器 239
7.6 本章小结 239
第8章 SQL语句性能优化实战 241
8.1 SQL语句编写 242
8.1.1 谓词 242
8.1.2 多余的连接 243
8.1.3 子查询 244
8.1.4 外连接 244
8.1.5 UNION ALL的使用 245
8.1.6 Having子句 245
8.1.7 OFNR和FFNR子句 245
8.1.8 使用参数标记 246
8.2 优化器 246
8.2.1 优化级别 248
8.2.2 注册变量 250
8.2.3 内存参数 251
8.2.4 表和索引设计 251
8.2.5 统计信息 251
8.2.6 信息性约束 253
8.3 SQL语句访问计划分析 254
8.3.1 解释工具 254
8.3.2 查询重写 258
8.3.3 访问路径 260
8.3.4 连接方法 265
8.3.5 问题SQL语句分析 268
8.4 其他优化建议 275
8.4.1 特殊的优化方法 275
8.4.2 Design Advisor优化指导 278
8.4.3 语句集中器 278
8.5 存储过程优化 280
8.6 XQuery优化 288
8.6.1 XQuery简介 288
8.6.2 如何使用 289
8.7 数据在线优化 294
8.7.1 REORGCHK 294
8.7.2 REORG 296
8.8 本章小结 298
第9章 锁和日志优化 302
9.1 锁 303
9.1.1 锁等待和超时 303
9.1.2 锁升级 304
9.1.3 死锁 304
9.2 锁的类型与兼容性 306
9.2.1 锁的类型 306
9.2.2 锁兼容 309
9.3 隔离级别与影响并发的因素 310
9.3.1 隔离级别介绍 310
9.3.2 DB2注册变量 311
9.3.3 当前已落实 312
9.4 锁监控和问题解决 313
9.4.1 锁等待监控 314
9.4.2 锁超时监控 318
9.4.3 死锁监控 327
9.5 日志与性能 331
9.5.1 循环日志 332
9.5.2 归档日志 332
9.5.3 日志的使用 333
9.5.4 写日志和写表 333
9.5.5 日志配置参数 334
9.6 日志监控与优化 337
9.6.1 日志监控 337
9.6.2 日志瓶颈与优化 339
9.7 本章小结 340
第四部分 高级优化技术
第10章 pureScale海量事务处理 342
10.1 什么是pureScale 343
10.2 pureScale架构 344
10.3 DB2 pureScale和 Oracle RAC的对比 346
10.4 DB2 pureScale实例 347
10.4.1 实例背景 347
10.4.2 硬件配置 348
10.4.3 软件安装配置 351
10.4.4 客户应用测试 354
10.5 小结 358
第11章 solidDB高速缓存优化 360
11.1 什么是solidDB高速缓存 361
11.2 solidDB高速缓存DB2数据 364
11.3 solidDB高速缓存应用场合 364
11.4 solidDB高速缓存架构 365
11.5 电信行业应用案例 366
11.5.1 应用背景 366
11.5.2 使用solidDB高速缓存加速 367
11.6 小结 375
附录A 常用监控命令用法
附录B 缩略语释义
后记
参考文献
读书思考:
***************************************
《从Oracle到DB2开发——从容转身》
内容推荐
《舞动db2系列:从oracle到db2开发—从容转身》是“舞动db2”系列的第二本,分为三大部分,共8章。第一部分从开发者遇到的问题进
行分析,提出在oracle兼容模式下开发数据应用的新思路,并讲述了从oracle迁移到db2的方法、工具及案例。第二部分讲述了db2开发工具方
面的知识,以及如何更有效地开发存储过程、用户自定义函数和触发器。第三部分讲述了开发者在javaee和.net架构下开发数据应用的最佳实
践。同时,在附录a中,针对sqlpl与pl/sql做了集中对比,对快速掌握两者异同是大有裨益的。
《舞动db2系列:从oracle到db2开发—从容转身》目标读者群主要针对以下人员:从oracle向db2转型的技术人员;db2应用开发工程师;
oracle应用开发工程师;数据库应用架构师;学习db2数据库开发技术的高校学生或者从事相关课程教学的教师。
目录
第1章 我看db2应用开发
1.1 老张的故事
1.1.1 从选型谈起
1.1.2 从oracle到db2转身的技术挑战
1.2 开发者的传统选择
1.2.1 从这里开始:开发技术分类
1.2.2 你需要知道的:传统解决办法
1.2.3 转身之顽症:暴力拆迁
1.3 db2应用开发:从容转身
1.3.1 新思路:oracle兼容特性
1.3.2 服务器端开发
1.3.3 客户端开发
1.3.4 开发工具选择
1.3.5 开发者转型的最佳实践
1.4 读者使用本书的方法
1.5 精彩絮言:避暑山庄中发生的高铁一幕
1.6 小结
第2章 当oracle开发者遇到db2
2.1 db2易容术:向oracle兼容
2.2 数据库对象:db2 vs oracle
2.2.1 临时表:db2更胜一筹
2.2.2 索引:难分伯仲
2.2.3 视图:势均力敌
2.2.4 约束:oracle依灵活棋高一着
2.2.5 序列:db2凭细腻一展威风
2.2.6 分区特性:db2更有妙招
2.2.7 数据库联邦:db2支持的数据源以多居上
2.2.8 数据字典视图:oracle借方便傲视对手
2.3 你必须知道的:db2命令行工具
2.3.1 db2 clp
2.3.2 db2 clpplus
2.4 从oracle迁移到db2
2.4.1 迁移工具:meet和idmt
2.4.2 迁移计划
2.4.3 迁移步骤
2.4.4 风险控制
2.5 精彩絮言:真功夫
2.6 小结
第3章 db2应用开发工具大观
3.1 全能选手,ibm optim data studio
3.1.1 data studio亮相
3.1.2 版本一比高低
3.1.3 一切从“连接”开始
3.1.4 详解数据库管理功能
3.1.5 编写脚本,地主老爷的碗——难端
3.1.6 玩转存储过程和udf
3.1.7 data studio评分
3.2 超级大管家,toad
3.2.1 初识toad for db2
3.2.2 toad起步,从“连接”开始
3.2.3 数据库管家的管理功能
3.2.4 轻车熟路的sql脚本
3.2.5 存储过程靠“向导”
3.2.6 toad评分
3.3 部落酋长,microsoft visual studio
3.3.1 双剑合璧,visual studio + ibm数据库插件
3.3.2 db2“瘦”管理
3.3.3 开发存储过程和udf
3.3.4 大展身手,开发客户端应用
3.3.5 visual studio评分
3.4 精彩絮言:从未离开的一种生活——选择
3.5 小结
第4章 sql pl开发db2服务器端应用
4.1 我看服务器端应用开发
4.1.1 离db2引擎越近的代码跑得越快
4.1.2 从内到外的改变
4.1.3 久经考验的sql pl
4.2 数据类型:db2 vs oracle
4.2.1 基本的数据类型大比拼
4.2.2 变量声明与赋值
4.2.3 oracle的%type属性?你有我也有
4.2.4 行类型,不就是oracle的记录类型吗
4.2.5 数组,居家旅行必备
4.2.6 关联数组
4.3 sql pl与存储过程
4.3.1 解剖sql pl存储过程
4.3.2 复合语句,oracle俗称“块”
4.3.3 条件分支中的if和case
4.3.4 四种循环与跳转
4.3.5 让游标和结果集为你工作
4.3.6 无所不能的游标变量
4.3.7 动态sql vs静态sql
4.3.8 条件处理,让你的程序更健壮
4.4 sql pl函数与触发器
4.4.1 内联sql pl与编译型sql pl
4.4.2 udf的本来面目
4.4.3 编译型sql pl函数
4.4.3 触发器的是是非非
4.5 高级主题探讨
4.5.1 db2的模块vs oracle的程序包
4.5.2 存储过程的递归
4.5.3 purexml,不一样的编程体验
4.5.4 洞悉权限管理,为安全而努力
4.5.5 存储过程性能优化的五条黄金法则
4.6 精彩絮言:一游香江解难题
4.7 小结
第5章 pl/sql开发db2服务器端应用
5.1 pl/sql, 从oracle到db2“从容转身”的支点
5.1.1 兼容oracle,支持pl/sql,这是一场革命
5.1.2 在db2中玩oracle的pl/sql?你的地盘你做主
5.1.3 不要忘了设置db2的oracle兼容性
5.1.4 应用开发场景一瞥:某大型电子商务系统
5.2 用类型精确控制你的数据
5.2.1 兼容oracle——从数据类型开始
5.2.2 变量声明与赋值语句
5.2.3 oracle的类型隐式转换,是方便还是隐患
5.2.4 %type属性——类型控制的最佳武器
5.2.5 用%rowtype属性更进一步
5.2.6 甚至可以自定义记录类型
5.2.7 用数组类型组织你的数据
5.2.8 强大的关联数组
5.3 从基本语句看真功夫
5.3.1 块与匿名块
5.3.2 null语句的妙用
5.3.3 oracle特有的sql?这一说法已成历史
5.3.4 bulk实现批处理,很好很强大
5.3.5 用returning into捕获增删改的值
5.3.6 sql属性告诉你sql语句的影响力
5.3.7 动态sql语句的是与非
5.4 老话新谈——程序流程控制
5.4.1 用if和case语句处理分支
5.4.2 你喜欢用哪一种循环
5.4.3 必不可少的异常处理
5.5 掌握游标,才掌握了数据库编程
5.5.1 按部就班的静态游标
5.5.2 无所不能的游标变量
5.6 完整而独立的例程世界
5.6.1 再回头看存储过程
5.6.2 用户自定义函数的真实面目
5.6.3 开发pl/sql触发器,当心
5.7 “包”,容一切
5.7.1 接口与实现分离的编程原则
5.7.2 程序包,容纳所有的接口声明
5.7.3 程序包主体,容纳全部实现细节
5.7.4 程序包的权限管理和引用
5.7.5 全面支持oracle的内置程序包
5.8 精彩絮言:候鸟小谈
5.9 小结
第6章 java存储过程
6.1 db2中java存储过程
6.1.1 左手java,右手sql
6.1.2 选择jdbc还是sqlj
6.1.3 java开发环境,不要设置错
6.1.4 应用开发场景一瞥:某大型电子商务系统
6.2 细说jdbc存储过程
6.2.1 开发jdbc存储过程的从容五步曲
6.2.2 趁热打铁讲安全控制
6.2.3 一个存储过程,一个java方法
6.2.4 输出型参数与返回结果集
6.2.5 jdbc编程中的三驾马车
6.2.6 ibm特有的存储过程编程接口
6.2.7 强大的java用户自定义函数
6.2.8 示例:jdbc存储过程实现订单处理
6.3 畅聊sqlj存储过程
6.3.1 sqlj到底是什么
6.3.2 开发sqlj存储过程:从五步到七步
6.3.3 安全机制是sqlj存储过程的杀手锏
6.3.4 sqlj的魅力也来自简单
6.3.5 sqlj的三驾新马车
6.3.6 示例:用sqlj存储过程实现订单处理
6.3.7 db2中jar文件的管理
6.4 java过程的“无毒”处理和“无邪”调试
6.4.1 消灭错误,世界清静了
6.4.2 调试java存储过程很难吗
6.5 精彩絮言:“蚝”情万丈
6.6 小结
第7章 java ee平台下开发db2
7.1 db2和java ee
7.1.1 从j2ee到java ee
7.1.2 准备java数据库开发环境
7.2 与jdbc共舞
7.2.1 数据库连接从drivermanager开始
7.2.2 更加弹性的datasource
7.2.3 选择连接池,拒绝手忙脚乱
7.2.4 三招玩转jdbc
7.2.5 最简单的statement
7.2.6 有备而来,使用“preparedstatement”
7.2.7 专为存储过程而来,callablestatement
7.2.8 大数据蕴含大智慧,lob和xml
7.2.9 有条不紊的事务处理
7.2.10 管理异常和警告,让程序更完善
7.3 sqlj编写数据库应用
7.3.1 连接数据库,sqlj自有一套
7.3.2 不一样的体验,sqlj执行sql语句
7.3.3 忙前忙后的iterator
7.3.4 iterator升级版,scrollable和updatable
7.3.5 双剑合璧,攻克存储过程
7.3.6 sqlj中的事务
7.3.7 从容应对大数据
7.3.8 轻松应对异常和警告
7.3.9 sqlj与jdbc,鱼和熊掌可以兼得
7.4 数据库编程中的快餐文化,持久化技术
7.4.1 o/r mapping,从表到对象
7.4.2 hibernate从配置文件开始
7.4.3 将表“对象化”
7.4.4 o/r mapping的精髓,一切尽在映射中
7.4.5 漫游数据只需两步
7.5 java程序从oracle迁到db2,easy到流泪啊
7.5.1 第一步,修改数据库连接
7.5.2 第二步,修改参数类型
7.5.3 第三步,修改不兼容的sql语句
7.6 精彩絮言:川情似火贯天地,锦味胜椒辛古今
7.7 小结
第8章 .net平台下开发db2应用程序
8.1 扑朔迷离的.net
8.1.1 通向数据库的统一接口 ado.net
8.1.2 轻松转身db2,oracle开发者一点通
8.1.3 融会贯通.net开发语言
8.2 揭开db2 .net开发的神秘面纱
8.2.1 db2 vs oracle,data provider大比拼
8.2.2 数据库连接如何做得更好
8.2.3 增删改查,撑起业务流程
8.2.4 畅游结果集,dataset和dataadapter
8.2.5 玩转存储过程
8.2.6 轻松完成事务管理
8.2.7 玩转大对象
8.2.8 新事物有新方法,处理xml数据
8.3 想说爱你不容易,ole db和odbc for .net
8.3.1 似曾相识的数据库连接
8.3.2 大同小异的数据库操作
8.3.3 ole db.net的禁区
8.3.4 odbc.net的禁区
8.3.5 如何选择data provider
8.4 visual studio快速开发db2应用程序
8.4.1 三招拿下应用开发
8.4.2 黄金组合搞定数据获取
8.4.3 从容地操纵数据
8.5 精彩絮言:从容转身,第二弹
8.6 小结
附录a sql pl与pl/sql比较
附录b 缩略语释义
后记
参考文献
读书思考:
****************************************
《运筹帷幄DB2:从Oracle运维转型》
内容简介
本书是舞动DB2系列的第三本。全书用通俗易懂的语言诠释了DB2 数据库的管理和维护工作,提出了DB2 运维的新思路,并从实战角度阐
述了DB2 数据库在运维过程中的常见问题、分析思路和解决方案,配以典型的行业案例,环环相扣,精彩纷呈,是一本值得拥有的DB2学习书
籍。
目录
第1章DBA与DB2运维1
1.1DBA们的困惑:从Oracle向DB2运维转型2
1.1.1“库二代”的前世今生2
1.1.2向Oracle转型的挑战4
1.2DBA们,你们对自己的职业自信吗6
1.2.1学哪个数据库更有前途:Oracle还是DB27
1.2.2“钱途”和提升能力哪个更重要8
1.3DBA的职责:无限风光在险峰9
1.3.1日常维护10
1.3.2处理故障14
1.4DBA修炼之道:运筹帷幄决胜千里17
1.4.1搭起黄金屋17
1.4.2精通软硬件技术18
1.4.3加强精神层面的修养19
1.4.4熟练运用工具20
1.5读者使用本书的方法23
1.6运维攻略笔记——运筹帷幄从蒙古起步23
1.7小结25
第2章DB2安装与配置——瑜伽式的运维启航26
2.1找对版本摸清特性——DB2的版本与特性27
2.1.1认识她选择她——DB2版本27
2.1.2了解她明白她——DB2的特性28
2.2并非“万事开头难”——DB2的安装30
2.2.1关键第一步——修改系统内核参数30
2.2.2轻轻松松开始——通过安装向导在Linux平台上安装DB231
2.2.3DB2高级安装方法(适合Linux/UNIX平台)40
2.2.4享受成果——数据库操作初体验44
2.2.5理清在不同平台上安装的差异——Windows、Linux和UNIX平台安装要点45
2.2.6DB2安装常见问题47
2.3配置决定一切——DB2的环境与参数配置49
2.3.1环境变量(EnvironmentVariables)50
2.3.2文件注册表(DB2ProfileRegistries)51
2.3.3数据库管理器配置参数(DBMCFG)52
2.3.4数据库配置参数(DBCFG)53
2.3.5参数配置的实例54
2.4DB2数据库的系统编目56
2.4.1什么是DB2编目表56
2.4.2SYSCAT编目视图57
2.4.3SYSSTAT编目视图60
2.4.4与ORACLE数据字典的比较61
2.5运维攻略笔记——坐等扬帆时62
2.6本章小结63
第3章雾里看花——DB2的管理和操作64
3.1从DB2体系结构开始65
3.1.1DB2体系结构:分层管理65
3.1.2DB2进程模型:线程vs进程66
3.1.3掌握DB2内存模型:不容易69
3.2DB2实例75
3.2.1什么是实例76
3.2.2你必须掌握的:实例管理命令77
3.3DB2数据库78
3.3.1创建数据库:竟然有这么多学问78
3.3.2你必须掌握的:数据库管理命令80
3.4DB2表空间82
3.4.1表空间种类:真不少82
3.4.2你必须掌握的绝活:DB2存储规划83
3.4.3表空间管理的三板斧88
3.4.4攻克难关:降低表空间高水位标记91
3.5DB2访问与操作95
3.5.1访问DB2的接口95
3.5.2访问远程数据库的方式96
3.5.3实战:连接远程数据库98
3.5.4你必须掌握的:实用DB2命令100
3.6DB2安全控制102
3.6.1什么是DB2中的认证102
3.6.2什么是DB2中的授权104
3.6.3如何对敏感数据加密117
3.6.4三层架构的安全基石:可信上下文120
3.7运维攻略笔记——当Oracle使用者遇见DB2121
3.8本章小结122
第4章芝麻开门—DB2数据仓库123
4.1数据仓库是什么124
4.1.1数据仓库的误区124
4.1.2数据仓库的体系结构126
4.2支撑数据仓库的DB2特性127
4.2.1分区数据库127
4.2.2灵活的数据分区129
4.2.3分区环境中的连接(Join)策略132
4.2.4物化查询表134
4.3DB2数据仓库系统设计135
4.3.1BCU/BPU的设计原则135
4.3.2数据BPU上存储划分的原则138
4.3.3数据库文件的系统划分138
4.3.4仓库中诞生的数据库139
4.3.5数据库分区组的设计139
4.3.6缓冲池的设计140
4.3.7数据库日志的设计141
4.3.8表空间的设计142
4.3.9表的存放技巧142
4.3.10数据压缩143
4.4数据仓库实战143
4.4.1实战的硬件环境143
4.4.2数据仓库中实例的规划与实施144
4.4.3数据仓库中数据库的规划与实施149
4.4.4数据仓库中的DB2参数设置152
4.4.5其他操作154
4.5DB2工作负载管理(WLM)156
4.5.1创建WLM的监视器156
4.5.2怎样控制已知工作的负载158
4.5.3怎样控制不可预见的工作负载159
4.5.4对并行LOAD的工作负载限制162
4.6数据仓库日常运维163
4.6.1DB2数据仓库可扩展吗163
4.6.2对数据库分区的维护163
4.6.3分区数据库中常用的两个命令168
4.6.4数据仓库的备份与恢复169
4.7与Oracle数据仓库的比较169
4.8运维攻略笔记:想买房先预测一把地铁修到哪里170
4.9本章小结172
第5章运维中的锁处理与并发控制173
5.1如履薄冰——并发环境下的数据库运维174
5.2并发控制的法宝——DB2锁机制解析180
5.2.1锁与事务一致性181
5.2.2锁的类型和相互关系184
5.3定制并发——DB2隔离级别188
5.3.1隔离级别解析188
5.3.2隔离级别设定190
5.3.3隔离级别与锁常见问题192
5.4样板戏——锁之案例解析194
5.4.1解锁的“样板”套路194
5.4.2沙家浜开始了195
5.4.3锁等待分析197
5.4.4锁超时分析202
5.4.5锁升级分析205
5.4.6死锁探秘206
5.5精打细算——DB2并发性的最大化215
5.5.1并发性与性能问题215
5.5.2并发性与应用程序设计216
5.5.3如何实现并发性的最大化217
5.6强力PK——DB2和Oracle并发机制比较220
5.7经验之谈——提升系统并发能力的秘诀221
5.8运维攻略笔记:体验过网络购票吗?感觉慢的话,来这里看看224
5.9小结225
第6章DB2日常运维—监控226
6.1运维人员的必修课——监控227
6.1.1监控工作的原则227
6.1.2监控的任务228
6.2每天你需要做什么230
6.2.1监控存储空间状态231
6.2.2监控主机状态234
6.2.3检查数据库状态236
6.2.4每日监控任务与命令对照表245
6.3每周你需要做什么246
6.3.1检查全量备份246
6.3.2检查是否需要Runstats248
6.3.3检查表是否需要重组248
6.3.4查找并重新绑定无效包250
6.3.5监控新对象和应用程序变动250
6.4每月你需要做什么252
6.4.1监控月结过程252
6.4.2统计数据增长253
6.4.3检查权限变更254
6.4.4审计用户操作255
6.4.5检查软件更新258
6.5监控利器——DB2监控工具259
6.5.1快照监视器259
6.5.2事件监视器262
6.5.3监视器表函数266
6.5.4管理视图268
6.5.5db2pd270
6.5.6db2top273
6.6如何监控特定问题274
6.7运维攻略笔记——女性运维指南280
6.8小结281
第7章有备无患——数据库备份与恢复282
7.1DB2金刚不坏之身的秘密283
7.1.1运维人员必须看清的日志真相283
7.1.2突然断电之灾难恢复290
7.1.3归档日志很给力,也会吓坏人292
7.1.4日志与备份恢复的关系295
7.2挂一档起步295
7.2.1备份很简单吗295
7.2.2手把手教你使用BACKUP命令298
7.2.3Oracle、DB2、版本恢复和前滚恢复300
7.2.4手把手教你使用RESTORE和ROLLFORWARD命令302
7.2.5有个捷径:RECOVER命令恢复306
7.2.6有个技巧:恢复被删除的表309
7.3踩油门快跑312
7.3.1备份和恢复机制312
7.3.2增量备份与恢复313
7.3.3全备份和表空间备份316
7.3.4大容量磁带库备份恢复318
7.3.5重定向恢复数据——应对机器损坏的招数322
7.3.6FlashCopy——高级备份方式326
7.4工具箱327
7.4.1监控工具327
7.4.2查看历史记录329
7.4.3检查备份介质完整性331
7.4.4实例参数导出导入332
7.5DPF分区环境下的备份与恢复333
7.5.1DPF分区环境下备份与恢复的特点333
7.5.2再论BACKUP与RESTORE命令334
7.5.3需要掌握:db2_all和rah命令337
7.6最佳实践338
7.6.1了解DB2备份策略338
7.6.2如何让我的备份井井有条339
7.6.3还有哪些可供调整的参数340
7.7运维攻略笔记——一条龙解决方案342
7.8小结343
第8章数据移动——搬运的年代344
8.1数据移动时刻准备着345
8.1.1移动数据不容易345
8.1.2移动手段多多益善345
8.1.3“移动的粮草”先行346
8.2数据移动双胞胎——PORT兄弟348
8.2.1手把手教你使用EXPORT命令导出数据348
8.2.2手把手教你使用IMPORT命令导入数据353
8.3LOAD面面观363
8.3.1手把手教你使用LOAD命令导入数据363
8.3.2你所要知道的LOAD的四个阶段366
8.3.3你所要知道的LOAD过程中表的状态以及应对方法368
8.3.4LOAD提速与刘翔跨栏有一样的烦恼371
8.3.5LOAD好,还是IMPORT更棒372
8.4还有什么移动方式可供选择373
8.4.1使用db2move在数据库间移动数据374
8.4.2使用ADMIN_MOVE_TABLE在数据库内移动表378
8.4.3使用ADMIN_COPY_SCHEMA在数据库内移动对象382
8.4.4特殊对象的移动方式383
8.4.5物理层面移动数据389
8.5多分区环境下的数据移动395
8.5.1多分区环境下的LOAD395
8.5.2多分区环境下LOAD需注意的问题400
8.6Oracle数据移动与DB2数据移动的比较401
8.7运维攻略笔记——检验的三个指标402
8.8本章小结403
第9章数据库故障诊断404
9.1救场如救火排障如救人405
9.1.1数据库出了故障?急!405
9.1.2常见问题与故障分类407
9.1.3排障六诀408
9.1.4日常运维“防患于未然”409
9.2你必须掌握的故障诊断工具410
9.2.1db2support收集诊断信息410
9.2.2db2diag分析事故现场413
9.2.3db2pd诊断和调优415
9.2.4db2trc跟踪DB2的内部运行416
9.3一场惊心动魄的排障实战417
9.4DB2数据库排障案例集420
9.4.1与实例相关的问题集锦421
9.4.2存储规划问题425
9.4.3DB2日志、备份恢复一箩筐431
9.4.4LOAD,一定要hold住433
9.4.5日常运维那些事儿435
9.4.6数据仓库排障436
9.5运维攻略笔记——呵呵,IBM的人喜欢在盘古大观上看问题440
9.6小结441
附录AOracle和DB2机制对比442
附录BOracle和DB2术语对比444
附录COracle和DB2命令对比446
附录D缩略语450
后记455
参考文献456
读书思考:
**********************************************
《DB2设计、管理与性能优化艺术》
内容提要
本书内容严谨精细、生动活泼,从内容来看,共分为四大部分,共11章。
第一部分包括第1章和第2章,提出了两种性能优化方法学,包括理想
化的自上而下方法学和救急专用的自下而上方法学,随后通过一个真实的实战案例,阐述了如何灵活运用方法学。
第二部分是设计部分,包括
第3章、第4章和第5章,分别谈到了物理设计、基础逻辑设计和高级逻辑设计,这是设计一个高质量的数据库系统所必须掌握的内容。
第三部
分是性能优化部分,包括第6章、第7章、第8章和第9章,讲述了如何对DB2进行性能监控,如何调整参数和优化维护工具,如何调整锁和日志
来优化高并发系统,如何来优化最耗资源的SQL语句。
第四部分是有关高级设计与优化内容,包括第10章和第11章,讲述了如何设计和优化大
容量数据仓库,讲述了如何设计和优化DB2pureScale集群。
第1章 性能优化方法学
1.1 什么是性能问题 2
1.1.1 如何发现性能问题 2
1.1.2 衡量性能的关键指标 2
1.1.3 性能基准测试 3
1.1.4 制定优化目标 3
1.2 性能优化方法学 3
1.2.1 几种常见误区 4
1.2.2 自上而下(From Top To Down)方法学 4
1.2.3 自下而上(From Down To Top)方法学 5
1.2.4 自上而下和自下而上,如何选择? 5
1.3 高质量数据库设计 5
1.3.1 充分了解需求 6
1.3.2 设计概念模型 7
1.3.3 设计逻辑结构 8
1.3.4 设计物理结构 10
1.3.5 应用开发阶段 10
1.3.6 运行维护阶段 11
1.4 性能调整与优化 11
1.4.1 磁盘瓶颈 12
1.4.2 CPU瓶颈 14
1.4.3 内存瓶颈 16
1.4.4 网络瓶颈 17
1.4.5 懒惰系统 17
1.4.6 关键SQL语句优化 18
1.5 性能优化基本准则 18
1.6 小结 19
第2章 实战案例研究与分享
2.1 性能问题的提出 21
2.1.1 系统现状:从Oracle RAC谈起 21
2.1.2 性能优化解决方案:“分库”架构 22
2.1.3 高可用解决方案:DB2 HADR 24
2.2 实施:经营分析库 26
2.2.1 DB2数据库安装 26
2.2.2 操作系统参数配置 27
2.2.3 实例创建与配置 29
2.2.4 存储规划与文件系统创建 30
2.2.5 数据库创建 32
2.2.6 DB2参数配置 35
2.3 实施:DB2 HADR 38
2.3.1 准备工作 38
2.3.2 复制数据库 38
2.3.3 配置HADR 43
2.3.4 启动主从数据库 44
2.3.5 HADR切换演练 45
2.3.6 为JAVA应用配置ACR 47
2.4 性能分析 48
2.4.1 业务分析 49
2.4.2 系统分析 49
2.4.3 优化方法学与计划 50
2.5 性能优化 51
2.5.1 全局调整和优化 51
2.5.2 人力资源模块优化 64
2.5.3 查询分析模块优化 69
2.5.4 报表应用优化 72
2.5.5 性能优化总结 74
2.6 小结 75
第3章 高质量物理设计
3.1 从数据库硬件选型谈起 77
3.1.1 对主机的考虑 77
3.1.2 对存储的考虑 77
3.1.3 对网络环境的考虑 78
3.1.4 电信公司选型结果 78
3.2 存储设计 79
3.2.1 磁盘与磁盘阵列技术 80
3.2.2 条带化 83
3.2.3 存储设计 84
3.2.4 为电信公司规划存储 87
3.2.5 为电信公司创建数据库 87
3.3 表空间设计 88
3.3.1 表空间管理方式 88
3.3.2 表空间类型 91
3.3.3 表空间参数设置 92
3.3.4 为电信公司设计表空间 93
3.4 内存的设置管理 94
3.4.1 解密DB2内存 95
3.4.2 缓冲池设计 99
3.4.3 缓冲池命中率 101
3.4.4 STMM自动管理内存 102
3.4.5 为电信公司设计缓冲池 102
3.5 高质量物理设计最佳实践 103
3.5.1 硬件配置 103
3.5.2 存储的设计配置 103
3.5.3 数据库参数初始化选择 104
3.5.4 内存设置管理 104
3.5.5 表空间设计管理 104
3.6 小结 105
第4章 经典逻辑设计
4.1 数据库设计不仅是一种艺术 107
4.1.1 业务需求 107
4.1.2 性能需求 107
4.2 常规表设计体现真功夫 108
4.2.1 规范化决定成败 108
4.2.2 用户与模式 109
4.2.3 字段与类型 111
4.2.4 建表的讲究 114
4.2.5 键与约束 118
4.2.6 序列、标识列和生成列 120
4.2.7 处理大对象的智慧 122
4.3 扑朔迷离的临时表 125
4.3.1 声明全局临时表(DGTT) 125
4.3.2 创建全局临时表(CGTT) 127
4.3.3 临时表小结 128
4.4 无处不在的时态表 129
4.4.1 无处不在的时间 129
4.4.2 系统时态表 130
4.4.3 应用时态表 134
4.4.4 双时态表 138
4.4.5 将普通表转换为时态表 139
4.5 索引设计是一招鲜,吃遍天 140
4.5.1 DB2索引长什么样 140
4.5.2 为了性能设计索引 142
4.5.3 吃透组合索引 148
4.5.4 创建索引 150
4.5.5 索引的常见误区 150
4.6 触发器设计一瞥 155
4.7 小结 156
第5章 高级逻辑设计
5.1 如何处理TB级的数据 158
5.1.1 方法学指导 158
5.1.2 合理运用高级设计技术 158
5.2 DB2 DPF设计 159
5.2.1 DB2 DPF技术内幕 160
5.2.2 DB2 DPF设计最佳实践 161
5.3 表分区设计 162
5.3.1 表分区技术内幕 163
5.3.2 全局索引vs分区索引 166
5.3.3 转入转出 168
5.3.4 分区排除技术 169
5.3.5 分区维护 172
5.3.6 V10新特性:多温度存储 173
5.4 MDC表设计 175
5.4.1 MDC技术内幕 175
5.4.2 MDC表设计最佳实践 177
5.4.3 案例:“吃磁盘”的MDC表 178
5.5 分区技术对比:DB2 vs Oracle 179
5.6 MQT设计 184
5.6.1 MQT的能力 184
5.6.2 创建MQT必须掌握的要点 187
5.6.3 深入讨论MQT的刷新机制 188
5.6.4 MQT设计最佳实践 190
5.7 强大的数据压缩 192
5.7.1 行压缩深度剖析 192
5.7.2 V10新特性:自适应压缩 194
5.7.3 数据压缩实践与探索 195
5.8 小结 198
第6章 系统监控
6.1 由一则新闻想到的 200
6.2 操作系统监控 200
6.2.1 CPU监控 201
6.2.2 I/O监控 203
6.2.3 内存监控 204
6.2.4 网络监控 206
6.3 数据库监控 207
6.3.1 快照监视器 207
6.3.2 事件监视器 211
6.3.3 监视器表函数 214
6.3.4 管理视图 218
6.3.5 db2pd 219
6.3.6 db2top 222
6.4 关键SQL语句监控 223
6.4.1 监控最耗费用户CPU时间的动态SQL 223
6.4.2 监控访问热点对象执行次数最多的SQL 224
6.4.3 监控运行时间最长的SQL 224
6.4.4 监控执行次数最多的SQL 224
6.4.5 监控排序次数最多的SQL 225
6.5 关键性能指标(KPI) 225
6.5.1 缓冲区命中率 225
6.5.2 包缓冲区命中率 226
6.5.3 编目缓冲区命中率 226
6.5.4 缓冲区读写平均响应时间 226
6.5.5 日志写入速度 227
6.5.6 锁升级及死锁 227
6.5.7 排序溢出率 227
6.5.8 数据、索引页异步清除比例 228
6.5.9 脏页偷取次数 228
6.6 融会贯通——监控的最佳实践 229
6.6.1 CPU瓶颈问题的监控与诊断 229
6.6.2 I/O瓶颈的监控与诊断 231
6.6.3 内存瓶颈的监控与诊断 234
6.6.4 懒惰系统的监控与诊断 236
6.7 图形化性能管理器 237
6.8 小结 238
第7章 配置参数与运维工具优化
7.1 配置参数优化 240
7.1.1 操作系统参数优化 240
7.1.2 DBM参数优化 242
7.1.3 DB参数优化 244
7.1.4 注册变量优化 249
7.1.5 常见问题总结 250
7.2 日常运维工具的使用与优化 250
7.2.1 知已知彼——统计信息收集 250
7.2.2 集中兵力——碎片整理工具 251
7.2.3 随机应变——重新绑定 253
7.3 数据移动工具 254
7.3.1 导出数据(EXPORT) 255
7.3.2 导入数据(IMPORT) 256
7.3.3 LOAD——导入大数据的核武器 259
7.3.4 LOAD FROM CURSOR轻松移动数据 269
7.3.5 INGEST——性能和可用性间平衡的使者 270
7.3.6 使用db2move在数据库间移动数据 274
7.3.7 db2relocatedb——DB2移形换位 276
7.3.8 存储过程——内部数据挪移的利器 278
7.3.9 特殊对象的移动方式 283
7.4 备份恢复工具优化 286
7.4.1 备份的基本原理与优化 286
7.4.2 DB2崩溃恢复、版本恢复和前滚恢复与优化 290
7.5 运维工具的调速策略 294
7.6 小结 296
第8章 锁和日志优化
8.1 DB2锁机制解析 299
8.1.1 没有锁会发生什么 299
8.1.2 锁的类型和兼容性 301
8.2 DB2隔离级 305
8.2.1 DB2提供的四种隔离级 305
8.2.2 如何设定隔离级 307
8.3 实战案例:锁问题分析和解决 308
8.3.1 什么是锁问题 308
8.3.2 从监控开始 309
8.3.3 锁等待分析和解决 311
8.3.4 锁超时分析和解决 314
8.3.5 锁升级分析和解决 315
8.3.6 死锁分析和解决 316
8.4 深入浅出——DB2日志的秘密 320
8.4.1 DB2日志的原理 320
8.4.2 DB2日志的模式 323
8.4.3 日志优化的最佳实践 325
8.5 并发机制比较:DB2 vs Oracle 326
8.5.1 锁与隔离级别:DB2 vs Oracle 326
8.5.2 日志:DB2 vs Oracle 327
8.6 并发性能优化 328
8.6.1 应用开发 328
8.6.2 数据库调优 329
8.7 小结 330
第9章 SQL语句优化实战
9.1 SQL优化基础,理解DB2优化器 332
9.1.1 SQL语句的编译过程 332
9.1.2 DB2优化器的核心作用 333
9.1.3 SQL语句优化过程 334
9.2 SQL优化关键:分析访问计划 334
9.2.1 解释(Explain)工具 334
9.2.2 解读访问计划 338
9.2.3 表扫描与索引扫描 345
9.2.4 嵌套循环连接、归并连接和哈希连接 348
9.2.5 基数估计和统计信息 353
9.2.6 用优化概要定制访问计划 362
9.3 实战案例集锦 366
9.3.1 案例1:不可思议的物理读次数 367
9.3.2 案例2:理想的索引没用上 370
9.3.3 案例3:标记位(Flag)数据上的runstats时机 374
9.3.4 案例4:NLJOIN vs HSJOIN大比拼 377
9.3.5 案例5:不是压缩惹的祸 381
9.3.6 案例6:居高不下的CPU占用率 385
9.4 高级SQL语句应用 390
9.4.1 Merge语句 390
9.4.2 层次查询和SQL递归 392
9.4.3 报表开发中的GROUP BY扩展 398
9.5 编写高效SQL语句 401
9.5.1 不要检索多余的数据 401
9.5.2 避免在连接谓词中使用复杂表达式 402
9.5.3 将复杂表达式放在常量上 402
9.5.4 使用DB2提供的日期类型 403
9.5.5 谨慎对待隐式类型转换 404
9.5.6 外连接的顺序 404
9.5.7 IN和EXISTS子查询 405
9.5.8 OFNR和FFNR子句 410
9.5.9 动态SQL vs静态SQL 410
9.5.10 分组拼接字符串:LISTAGG 412
9.5.11 事务结束后及时COMMIT 412
9.6 小结 413
第10章 DB2数据仓库设计与优化
10.1 数据仓库是什么 415
10.1.1 数据仓库的误区 415
10.1.2 数据仓库的体系结构 417
10.2 支撑数据仓库的DB2特性 417
10.2.1 分区数据库 417
10.2.2 灵活的数据分区 419
10.2.3 多分区环境下的连接(Join)策略 422
10.2.4 物化查询表 424
10.3 DB2数据仓库设计 424
10.3.1 BCU/BPU的设计原则 424
10.3.2 数据BPU上存储划分 427
10.3.3 数据库的文件系统划分 427
10.3.4 仓库中诞生的数据库 428
10.3.5 数据库分区组的设计 428
10.3.6 缓冲池的设计 429
10.3.7 数据库日志的设计 429
10.3.8 表空间的设计 430
10.3.9 表的存放技巧 430
10.3.10 数据压缩 431
10.4 数据仓库实战 431
10.4.1 硬件环境 431
10.4.2 实例的规划与实施 432
10.4.3 数据库的规划与实施 436
10.4.4 参数设置 439
10.4.5 其他操作 440
10.5 工作负载管理(WLM) 442
10.5.1 管理已知的工作负载 442
10.5.2 管理不可预见的工作负载 443
10.5.3 管理并行的LOAD工作负载 446
10.5.4 监控工作负载 446
10.6 数据仓库优化总结 448
10.6.1 与OLTP系统的区别 448
10.6.2 设定优化目标 449
10.6.3 物理优化 449
10.6.4 逻辑优化 450
10.7 与Oracle数据仓库比较 450
10.8 小结 451
第11章 DB2 pureScale集群数据库
11.1 深入浅出DB2 pureScale架构 453
11.1.1 DB2 pureScale架构 453
11.1.2 DB2 pureScale的特点 454
11.1.3 DB2 pureScale与DB2 DPF的区别 455
11.2 从细节入手:与Oracle RAC对比 455
11.3 某银行DB2 pureScale实战案例 457
11.3.1 从硬件配置开始 457
11.3.2 突破难点:网络规划 458
11.3.3 抓住重点:存储与文件系统 465
11.3.4 检查与配置 467
11.3.5 正式安装 471
11.3.6 数据库部署 473
11.3.7 应用端配置 473
11.4 DBA必须掌握的: DB2 pureScale实用运维命令 476
11.4.1 日常管理命令 477
11.4.2 节点维护命令 479
11.4.3 GPFS文件系统管理命令 480
11.4.4 监控命令 481
11.5 DB2 pureScale规划总结 484
11.6 小结 485
后记 信念的奇迹
缩略语
参考文献
读书思考:
**********************************