欢迎光临
免费的PDF电子书下载网站

让DB2跑得更快——DB2内部解析与性能优化(DB2China论坛版主力作,在“内部解析”的基础上进行“性能调优”,定会让您的DB2“跑得更快”!资深数据库专家牛新庄等联袂推荐! PDF下载

编辑推荐

  单看“内部解析”四个字,就已经能体现《让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系统知识及技巧精髓的热心分享者及贡献者。

让DB2跑得更快——DB2内部解析与性能优化(DB2China论坛版主力作,在“内部解析”的基础上进行“性能调优”,定会让您的DB2“跑得更快”!资深数据库专家牛新庄等联袂推荐! PDF下载

目录

第1篇 性能定义及整体架构
第1章 DB2性能优化概述
1.1 性能目标
1.1.1 响应时间
1.1.2 吞吐量
1.2 工作负载类型
1.2.1 联机事务处理(OLTP)
1.2.2 联机分析处理(OLAP)
1.2.3 决策支持系统(DSS)
1.2.4 企业资源规划(ERP)
1.3 影响性能的因素
1.3.1 软件代码编写对性能的影响
1.3.2 应用程序架构设计对性能的影响
1.3.3 数据库设计对性能的影响
1.3.4 系统设计对性能的影响
1.4 本章小结
第2章 DB2架构介绍
2.1 DB2整体概况
2.1.1 DB2进程/线程体系简介
2.1.2 DB2内存体系简介
2.1.3 DB2相关文件简介
2.2 DB2组件介绍
2.2.1 操作系统服务
2.2.2 基本系统调度
2.2.3 关系数据服务
2.2.4 数据管理服务
2.2.5 缓冲池服务
2.2.6 数据保护服务
2.3 SQL语句处理过程
2.3.1 数据查询语言(DQL)
2.3.2 数据操作语言(DML)
2.3.3 事务处理语言(TPL)
2.4 本章小结
第2篇 性能监控工具及监控技巧
第3章 性能监控工具
3.1 实时监控工具
3.1.1 db2trc
3.1.2 db2top
3.1.3 db2pd
3.2 历史监控工具
3.2.1 快照
3.2.2 快照视图及快照函数
3.2.3 事件监视器
3.3 DB2工作负载管理(DB2 Workload Manager)
3.3.1 标识阶段(Identification Stage)
3.3.2 管理阶段(Management Stage)
3.3.3 监控阶段(Monitoring Stage)
3.4 语句解释说明工具
3.4.1 db2exfmt
3.4.2 db2expln
3.4.3 语句解释说明工具对比
3.5 监控技巧
3.5.1 查找数据库中耗时最长的语句
3.5.2 分析特定语句的时间分布
3.5.3 捕获所有的SQL语句
3.6 本章小结
第3篇 性能分析及内部原理剖析
第4章 深入探讨优化器
4.1 语法语义分析
4.1.1 查询解析
4.1.2 语义检查
4.2 SQL语句重写
4.2.1 谓词简介
4.2.2 扫描方式
4.2.3 连接运算
4.2.4 查询重写
4.3 优化器编译
4.3.1 生成备选执行计划
4.3.2 基数评估
4.3.3 成本计算公式
4.3.4 生成可执行的代码
4.4 基数评估检查
4.4.1 通过COUNT语句检查基数评估
4.4.2 使用Section Actuals分析执行计划
4.5 本章小结
第5章 SQL语句性能优化之7种武器
5.1 长生剑——基本统计信息
5.1.1 统计信息收集方法
5.1.2 统计信息收集策略
5.2 碧玉刀——分布统计信息
5.3 孔雀翎——列组统计信息
5.4 离别钩——REOPT
5.4.1 REOPT处理机制
5.4.2 REOPT的启用方式及监控
5.5 多情环——静态视图
5.6 霸王枪——优化概要文件
5.6.1 优化概要文件的使用方法
5.6.2 优化概要文件规则
5.7 拳头——语句优化
5.8 本章小结
第6章 数据对象存储设计
6.1 表类型及设计方法
6.1.1 常规表
6.1.2 MDC表
6.1.3 分区表
6.1.4 MQT
6.1.5 表设计原则
6.2 索引类型及设计方法
6.2.1 索引的作用
6.2.2 索引创建原则
6.2.3 索引键顺序的选择
6.2.4 索引设计性能考虑
6.3 DB2设计顾问程序
6.3.1 战略性的索引创建
6.3.2 战略性的表类型选择
6.4 本章小结
第7章 DB2物理结构深入解析
7.1 表空间结构剖析
7.1.1 SMS(系统管理表空间)结构剖析
7.1.2 DMS(数据库管理表空间)结构剖析
7.1.3 高水位对于性能的影响
7.1.4 对容器进行重新平衡对性能的影响
7.2 数据页详解
7.2.1 数据页结构剖析
7.2.2 字段类型与行迁移
7.2.3 页重组
7.3 索引页详解
7.3.1 索引内部结构剖析
7.3.2 索引的分裂
7.3.3 索引维护和清除
7.4 日志文件结构剖析
7.5 本章小结
第8章 I/O管理及优化
8.1 数据I/O管理
8.1.1 缓冲池I/O原理
8.1.2 缓冲池逻辑读取
8.1.3 缓冲池物理读取
8.1.4 缓冲池写入操作
8.1.5 基于块的缓冲池I/O
8.1.6 缓冲池I/O监控
8.1.7 直接I/O管理
8.2 日志I/O管理
8.2.1 日志读取
8.2.2 日志写入
8.2.3 日志I/O原理
8.2.4 日志文件I/O相关调优参数
8.2.5 归档日志对I/O的影响
8.3 本章小结
第9章 内存管理
9.1 内存模型
9.1.1 实例共享内存
9.1.2 数据库共享内存
9.1.3 应用程序全局内存
9.1.4 代理程序私有内存
9.1.5 排序堆
9.1.6 其他内存区域
9.2 STMM
9.2.1 STMM运行机制
9.2.2 STMM监控
9.3 如何定位及修复内存泄漏
9.3.1 内存泄漏诊断方法
9.3.2 内存泄漏的处理方法
9.4 本章小结
第10章 DB2等待事件
10.1 锁对象及兼容性
10.1.1 锁对象及锁模式
10.1.2 锁兼容性及锁转换
10.2 锁问题的监控与解决
10.2.1 锁事件监控
10.2.2 锁问题解决方法
10.2.3 锁案例分享
10.3 latch事件
10.3.1 latch监控
10.3.2 案例分析
10.4 本章小结
第4篇 实用工具调优及操作系统优化
第11章 实用工具调优
11.1 备份恢复工具
11.1.1 backup
11.1.2 restore
11.2 数据移动
11.2.1 export
11.2.2 import
11.2.3 load
11.3 其他管理工具
11.3.1 reorg
11.3.2 runstats
11.4 本章小结
第12章 操作系统相关问题
12.1 AIX
12.1.1 虚拟内存管理
12.1.2 磁盘及文件系统管理
12.1.3 网络调优参数
12.1.4 操作系统相关参数
12.1.5 系统监控工具
12.2 Windows
12.2.1 内存管理
12.2.2 磁盘及文件系统相关参数
12.2.3 系统监控工具
12.3 本章小结
第5篇 性能分析思路及优化总结
第13章 性能问题分析思路
13.1 响应时间问题
13.1.1 响应时间总结
13.1.2 通过快照进行分析
13.1.3 通过快照函数进行分析
13.2 资源占用问题
13.2.1 磁盘瓶颈
13.2.2 CPU瓶颈
13.2.3 内存瓶颈
13.3 本章小结

媒体评论

 本书正符合优秀数据库著作的评判标准,其对DB2的技术理念与解决方法、实战性与科学性贯穿始终。本书作者从浩如烟海的数据库宝库中挑选出重要的知识点,引述了许多有意义的案例、搭配实例与配图,以轻松的笔调深入浅出、娓娓道来。

国内*数据架构和信息治理专家、中国民生银行总行科技部总经理 牛新庄

本书作者出于对DB2的狂热与追求,通过长期的凝练与汇聚,将DB2知识系统化,把DB2技巧的精髓热心地分享给广大读者,这是对数据库领域所做出的重要贡献与精彩强音!在出版领域,本书将给我们带来*的收获。我相信这本汇集作者的技术、经验和总结于一身的专业书籍,一定能吸引中国广大DB2爱好者沉浸于书中,并帮助他们取得重要的技术提升与进步。

DB2开发及客户支持总监,IBM中国开发中心 干毅民

想起年少时,武术老师讲授内家功与外家拳,曾讲到:“内家十年不出手,十年之后打平手,十年下来遍地走”。本书书名中“内部解析”其实就是在讲授“内练一口气,外练筋骨皮”的道理。若按此精神坚持下去,一定会有所建树,绽放光彩。

资深数据库专家、著名数据库专著作者 成孜论


当数据库技术爱好者在学习、研究和应用DB2数据库时,感到可用的参考资料比较少,实战性的方案与经验分享缺乏,亦或是感到在DB2系统部署、性能优化、故障诊断等工作环节中,需要更好的技术指导与参照时,我可以郑重地说:这本理性、科学的DB2性能优化著作出炉了!大家可从中一同品悟DB2,共赏精华!

昆仑银行信息科技部资深技术经理兼数据中心主任 唐志刚

前沿

前言
写作背景
作为最早出现的关系型数据库,DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力。并且DB2以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。近几年来,为了应对爆炸式增长的数据量,DB2也在进行推陈出新,不断推出完美应对大数据的技术,并持续增强DB2的性能以及可用性。到本书出版之时,DB2已经推出了V10.5版本,并在该版本中提供了列式存储功能及更加强大的性能提升。
DB2随着一代代版本的发展,已经成为一个庞然大物,其内部组件众多,对于SQL语句的处理有时甚至需要调动数十个内部组件进行相互协同。当遇到性能问题时更需要对内部原理有详细的了解才能进行有效的处理以及应对,否则就会让人感到无从下手。与Oracle数据库相比,DB2数据库的资料显得相对匮乏,其中鲜有对其内部运行机制进行详细剖析的资料,这也给DB2的传播发展带来了一定的弊端。因此对于这种情况,尽可能地将自己所知分享出来的想法从我脑中涌现,尽可能地对DB2处理过程在流程上进行阐述的念头一直支持着我完成本书的写作。
在常见的数据库问题中,性能问题不仅出现的频率较高并且很多生产系统中并不存在一个对性能问题进行隔离的高可用机制,正因为如此,在很多关键行业的系统中,性能问题往往成为影响生产系统正常运行的最大因素。而性能问题的影响时间有时长达数小时,这样不仅给生产系统带来了极大的负面影响,也使业务很难正常进行。
由于性能问题的特殊性,很多情况下问题发生过后并没有留下任何有效的故障信息,这又给之后的分析处理带来了一定的难度和困扰,往往并无相关线索可以对其进行求证。而对于性能问题的信息收集及调优方法,目前关于DB2性能调优的资料过于分散,并没有提供一个很完善的性能解决体系,甚至有些资料中仅仅在套用各个KPI指标对性能问题进行调节,虽然这种方式有时能够解决一些问题,但在更多时候会显得无能为力。
在本书中,通过对DB2数据库的内部机制进行探讨,希望能够让读者更好地理解数据库的运行机制,当性能问题发生时能够在脑海中对数据库的整体运作机制有个清晰的认识,这样才能够直接有效地对数据库进行分析与优化。
感谢读者选择本书,笔者水平有限,书中错漏在所难免,敬请读者朋友谅解,并期望读者朋友进行指正。

免费在线读

 4.4.2 使用Section Actuals分析执行计划
通过刚才的方法可以有效准确地判断每一步的实际基数。但是构建这样的COUNT查询语句不仅困难并且会消耗大量时间,当数据库中存在大量需要调优的SQL语句时无法一一进行检查,所以在DB2 Version 9.7 Fix Pack 1版本之后, 开始出现真实段(SectionActuals)的新特性来解决这个问题,可以使用以下步骤来实现Section Actuals。
步骤1:启用 Section Actuals
首先需要将数据库配置参数section_actuals设置为BASE,从而显式地启用真实段功能。
db2 update dbcfg for
using section_actualsbase

启用该参数后,我们就可以使用EXPLAIN_FROM_ACTIVITY存储过程来捕捉信息。

步骤 2:创建工作量管理器和事件监视器

必须为真实段创建一个workload和事件监视器。可以使用下列命令创建一个workload,也可以使用默认的workload管理器。

create workload MYWORKLOAD currentclient_acctng(MYWORKLOAD) service class sysdefaultuserclasscollect activity data on all database partitions with details,section;

grant usage on workload MYWORKLOAD to public;

create event monitor MYMON for activities write to table;

步骤 3:收集相关语句的Section Actuals

delete from ACTIVITYSTMT_MYMON;

call wlm_set_client_info(null, null, null, MYWORKLOAD,null);

set event monitor MYMON state 1;

-- a subset of the statement from scenario 1

SELECT * FROM DB2INST1.T4 AS Q1

WHERE (Q1.Y = Y)

AND (Q1.Z = N)

set event monitor MYMON state 0;

call wlm_set_client_info(null, null, null, null, null);

步骤 4:确定数据的Application、UOW和Activity ID

select appl_id, uow_id, activity_id, substr(stmt_text,1,80)as stmt

from ACTIVITYSTMT_MYMON ;

步骤 5:将数据输入到 EXPLAIN 表中

我们调用explain_from_activity过程来将有关语句输入到EXPLAIN表中。首先是3个输入APPL_ID、UOW_ID、ACTIVITY_ID,它们是根据步骤4输出中的有关语句来确定的。第4个输入是步骤3中设置的事件监视器的标识符,第5个输入是EXPLAIN表的模式名称。在这个例子中,EXPLAIN表的模式是VCORVINE。

call explain_from_activity(*LOCAL.DB2.100530150552,20,1,MYMON,

VCORVINE,?,?,?,?,?)

Value of output parameters

--------------------------

Parameter Name : EXPLAIN_SCHEMA

Parameter Value : VCORVINE

Parameter Name : EXPLAIN_REQUESTER

Parameter Value : VCORVINE

Parameter Name : EXPLAIN_TIME

Parameter Value : 2010-05-30-11.21.34.250000

Parameter Name : SOURCE_NAME

Parameter Value : SQLC2H21

Parameter Name : SOURCE_SCHEMA

Parameter Value : NULLID

Parameter Name : SOURCE_VERSION

Parameter Value :

Return Status = 0

步骤6:运行db2exfmt生成估算计划

db2exfmt –d

-1 –o ex_activity.out

步骤 7:检查输出

下面是ex_activity.out中db2exfmt输出的存取计划的一部分。

Rows

Rows Actual

RETURN

( 1)

Cost

I/O

|

...

0.0208 <;-- 估计的基数

13<;-- 实际基数

IXSCAN

( 5)

0.0104877

NA

|

13

NA

INDEX: DB2INST1

IDX89

这个执行计划中显示了每一个操作符的估算值及实际的记录数。SectionActuals是从Explain部分派生的,所以并非包含所有的数据。例如IXSCAN(5)操作中并不包含I/O的开销,因此也没有收集基数。

让DB2跑得更快——DB2内部解析与性能优化(DB2China论坛版主力作,在“内部解析”的基础上进行“性能调优”,定会让您的DB2“跑得更快”!资深数据库专家牛新庄等联袂推荐! pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版