让DB2跑得更快——DB2内部解析与性能优化--书籍官方答疑帖

本帖最后由 hongyehongye 于 2013-9-22 13:43 编辑



购买地址: http://product.dangdang.com/23339169.html#catalog
编辑推荐

本书作者在DB2China数据库论坛担任热点讨论版块版主,主持多次热点讨论以及专家现场诊断,擅长DB2数据库及相关产品的性能调优及故障分析,对DB2技能及实践经验有多年积累,并且近年来多位业界专家一直在积极推动DB2领域的技术交流,真正理解DB2技术人员真正的需求与痛楚,是DB2系统知识及技巧精髓的热心分享者及贡献者。
作者本人出于对DB2的狂热与追求,通过长期的凝练与汇聚,将DB2知识系统化,把DB2数据库调优技巧的精髓热心地分享给广大读者,并且凭借深厚而扎实的理论及经验,对DB2数据库的内部进行了深入解析,这是对数据库领域所做出的重要贡献与精彩强音!
单看“内部解析”四个字,就已经能体现本书的宝贵价值,在“内部解析”的基础上进行“性能调优”,定会让您的DB2“跑得更快”!



内容推荐

本书以优化为主题,根据数据库内部原理将DB2数据库对SQL语句及其他操作的内部机制进行详细剖析,并将RDS、DMS、IXM、BPS等DB2内部组件不为人知的一面展现给大家,以期做到对数据库的调优过程知其然并知其所以然。同时本书结合响应时间与资源瓶颈两种性能问题的现象,对数据库调优的整体思路进行详细讲解,对原来老式的调优思路进行整理和改动,结合了DB2V10.1版本的一些新的监控工具及特性,以一种全新的方式阐述DB2数据库性能调优的基本思路及实践方法。
本书适合DB2数据库管理员、数据库相关应用程序开发人员、系统管理员、系统架构师及有一定数据库基础的用户自学和参考,也可作为DB2培训的参考用书。



作者简介

洪烨,毕业于湖南大学,曾在IBM担任数据库现场技术支持,为北京移动、北京联通、中国银联、中国银行、中信银行、联想集团、国家气象局、中华联合保险、唐山商业银行等多家企业进行DB2故障诊断、技术支持以及技术培训工作,拥有DB2开发、高级管理以及AIX管理等多项国际认证。
并在DB2China数据库论坛担任热点讨论版块版主,主持多次热点讨论以及专家现场诊断,擅长DB2数据库及相关产品的性能调优及故障分析,对DB2技能及实践经验有多年积累。
近年来多位业界专家一直在积极推动DB2领域的技术交流,真正理解DB2技术人员真正的需求与痛楚,是DB2系统知识及技巧精髓的热心分享者及贡献者。



目录

第1篇  性能定义及整体架构
第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篇  性能监控工具及监控技巧
第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篇  性能分析及内部原理剖析
第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篇  实用工具调优及操作系统优化
第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篇  性能分析思路及优化总结
第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

显示部分信息


购买地址: http://product.dangdang.com/23339169.html#catalog





试读章节:

04.pdf (1.71 MB)



08.pdf (2.22 MB)

参与21

14同行回答

hongyehongyehongyehongye数据库管理员哈尔滨银行
回复 2# jimmy    ;P求J总置顶~显示全部
回复 2# jimmy


   ;P求J总置顶~收起
银行 · 2013-09-24
浏览1619
windywindy数据库管理员KSRCB
你好,老洪,说来惭愧,书买了很久了,但一直没有仔细拜读,只是功利主义的找个别章节来读了,最近得闲,仔细研读。然而,在第一章1.3.1中的例子好像不对,union的结果是左右结果集的去重并集,(123)union(245) =(12345),而你改过之后的语句取值不对。思路是没错,例子怕是举错了吧。P32,书中指出...显示全部

你好,老洪,说来惭愧,书买了很久了,但一直没有仔细拜读,只是功利主义的找个别章节来读了,最近得闲,仔细研读。

然而,在第一章1.3.1中的例子好像不对,union的结果是左右结果集的去重并集,(123)union(245) =(12345),而你改过之后的语句取值不对。

思路是没错,例子怕是举错了吧。

P32,书中指出“在64位系统中,必须将SHMMAX(共享内存段的最大大小)设置为最小值1GB(1073741824字节)”。根据信息中心的修改内核参数LINUX的介绍,SHMMAX应该设置成<RAM大小,以字节计>。
在developworks中看到如下的说明“DB2 will try to acquire the entire database memory area using a single segment if possible. If that fails (i.e. due to shmmax), then we'll retry using multiple 1GB segments, which is why you did not see any benefit to increasing shmmax to 4GB (it's still too small). So, if you set shmmax to 9GB or larger, you should see only a single segment created. In DB2 9.5, we recommend setting shmmax to the amount of RAM on the machine to avoid the multi-segment issue.

I can't say what the performance benefits of fewer segments may be - it will likely be dependent on your workload. If you have a highly variable workload where connections (and so DB2 agents too) are constantly coming and going, it may have more of an effect, since when the DB2 agent is associated to the database, it will need to make 9 system calls to attach each of those segments, rather than a single system call (similarly when the agent needs to disassociate from the database). Even if you can't see any tangible performance benefits though, it shouldn't hurt to increase shmmax.”
https://www.ibm.com/developerworks/community/forums/html/threadTopic?id=77777777-0000-0000-0000-000014068277

所以,我有了疑问,单段和多段哪种性能更好? 我们到底应该怎么来设置SHMMAX?

收起
IT咨询服务 · 2017-11-24
浏览2066
zyqroryzyqrory系统运维工程师思创
榜样啊榜样啊显示全部

榜样啊榜样啊

收起
IT咨询服务 · 2017-02-14
浏览2108
lcyaolcyao软件开发工程师VP科技股份有限公司
标记一下,需要时购买。显示全部
标记一下,需要时购买。收起
银行 · 2014-06-13
浏览2112
2013software2013software软件开发工程师交通银行
另外,你是否给企业提供培训服务,公司正在找专家,在这几个月内给员工培训DB2\WAS\AIX,看了你的书,觉得你DB2的功底深厚。显示全部
另外,你是否给企业提供培训服务,公司正在找专家,在这几个月内给员工培训DB2\WAS\AIX,看了你的书,觉得你DB2的功底深厚。收起
互联网服务 · 2014-05-09
浏览2087
2013software2013software软件开发工程师交通银行
你的书中提到,SQL谓词中因为使用了参数标记,导致无法使用分布统计信息,执行很慢,需要使用REOPT来推迟编译。想知道,项目中用JAVA编写的WEB程序,通过JDBC API执行类似的SQL:select * from wf_task where nodeid=?,这条SQL编译的时候能用到分布统计信息吗?也需要使用REOPT来推迟编译...显示全部
你的书中提到,SQL谓词中因为使用了参数标记,导致无法使用分布统计信息,执行很慢,需要使用REOPT来推迟编译。
想知道,项目中用JAVA编写的WEB程序,通过JDBC API执行类似的SQL:select * from wf_task where nodeid=?,这条SQL编译的时候能用到分布统计信息吗?也需要使用REOPT来推迟编译吗?收起
互联网服务 · 2014-05-09
浏览2502
ptchsirptchsir软件开发工程师artech
学习了显示全部
学习了收起
软件开发 · 2014-05-02
浏览2480
Priest_LeonPriest_Leon系统架构师99无限
回复 7# leo_wyn :lol显示全部
回复 7# leo_wyn

:lol收起
互联网服务 · 2013-10-13
浏览2410
Priest_LeonPriest_Leon系统架构师99无限
高手收起
互联网服务 · 2013-10-13
浏览2404
leo_wynleo_wyn商业智能工程师Security
兄弟,送几本学习下呗显示全部
兄弟,送几本学习下呗收起
系统集成 · 2013-10-08
浏览2435

提问者

hongyehongye
数据库管理员哈尔滨银行
擅长领域: 服务器存储数据库

相关资料

问题状态

  • 发布时间:2013-09-24
  • 关注会员:3 人
  • 问题浏览:19044
  • 最近回答:2017-11-24
  • X社区推广