高级进阶DB2(第2版)——内部结构、高级管理与问题诊断

出版时间:2013-7  出版社:清华大学出版社  作者:牛新庄  

前言

序一自1970年IBM公司研究员E.F.Codd博士,即“关系数据库之父”,发表业界第一篇关于关系数据库理论的论文A Relational Model of Data for Large Shared Data Banks以来,伴随着DB2的诞生,IBM公司涌现出了一批优秀的数据库技术领域先驱科学家,并获得了一系列数据库领域大奖,比如在1981年荣获了计算机科学界的最高荣誉——ACM图灵奖。在此之后,数据库管理软件在企业中得到广泛应用,业务流程自动化得以实现,对日常的工作和生活带来了深远的影响。随着近年来云计算、大数据、移动以及社交信息技术的发展,数据技术也正在经历深刻的变革,处于一个全新计算时代的最前沿。我们能够观察到这样一个趋势:数据库的24×7高可用性、高可伸缩性,企业处理海量信息的方式将趋于实时,并从根本上转变业务运作的模式。客户在数据处理速度、简化程度和成本控制等方面需要更上一层楼。最新版的DB2V10.1能带来更低的存储要求以及更高的响应速度,并添加了对大数据管理(如Hadoop)的支持。更具创新性的PureData也在这样的技术潮流中应运而生,它整合了基础架构、统一平台管理和专家知识体系,能够以不同的配置分别提供OLTP(联机事务处理)、OLAP(联机分析处理)和大数据分析操作的能力。今天的企业用户希望他们的数据库能够可靠高效地运作,并推动业务发展。当我们把目光放到中国,就会看到,DB2已成为各行业大型应用系统的支柱产品。但是因DB2而闻名业界的本土技术专家,并不多见。认识新庄是在今年8月北京举办的“IBM软件技术峰会”上。在中国的数据库技术领域,他是许多年轻人的楷模。新庄的成长令人欣喜,新庄对技术和实践的孜孜不倦令人印象深刻。这套DB2书籍得益于他历年的钻研及实践,对DB2初学者、DB2管理员以及资深从业者,都有非常好的指导及参考价值。祝愿每一位读者能有所得、有所悟,成长为新一代的数据技术专家,也祝愿新庄在数据技术领域这条康庄大道上走得更宽更远。IBM全球副总裁兼IBM中国开发中心总经理王阳序二新庄是IBM的老朋友,也是我的老朋友了。虽然我们的见面次数并不多,但我深感他是一位非常优秀的技术专家和管理者。尤其是在技术方面,他有自己的独特见地,在IT软件、硬件及解决方案方面都涉猎很广。另外,他本人也很亲和,具有技术专家的风范。在最近一次交流中,他跟我提起他打算把之前出版的三本DB2系列书籍进行全面版本升级,我感到非常钦佩和欣喜。他在繁忙的日常工作之余,还能利用业余时间完成三本书籍的撰写和更新,足以证明新庄的勤奋和对技术的热爱。同时我也欣喜广大的技术爱好者能有机会一饱技术大家的分享和心得。他把他的新书送给我,我先粗略读了一遍,更详细的内容留待以后的时间里细细品味。他的这三本书籍将帮助数据库爱好者和企业数据库实践者由浅入深地学习DB2。即使在网络日益普及的今天,对于一名DB2技术工作者来说,通过书籍来系统化地进行学习同样很关键。在我看来,阅读他的书籍有三个最特别之处:第一,他是第一位出版DB2系列中文书籍的作者,随着这么多年书籍的广泛传播,他在此基础上再次升级更新,结合了非常多的读者反馈,增加了很多近几年读者关注和遇到的问题,这个非常难得。第二,他所在单位的核心数据库就是DB2,本次书籍的升级纂写,也更多结合了他的实战经验,这将极大帮助更多企业在应用DB2数据库时借鉴和学习。第三,很多的技术书籍是由专注于技术的工作者纂写,而新庄同时还是非常重要的技术管理和实践者。站在管理者的角度纂写的技术书籍更是融合了管理者如何看待技术的处理和看待问题的视角。这几本书综合来看,也体现了一个技术管理者乐于分享的心意,这一点是最难得的。最后,让我表达对新庄的敬意和谢意,感谢他对推动中国的信息化建设和技术的普及所作出的贡献!希望广大的技术爱好者和技术管理者好好品味这些书籍,相信你们一定能从中获益匪浅!IBM全球副总裁兼IBM软件集团大中华区总经理胡世忠前言数据库内核是数据库系统稳定运行的心脏,DB2数据库内核庞大而复杂。本书从DB2内核组件入手,同时介绍了其与操作系统在进程、共享内存、信号量之间的关系。本书重点介绍了各个内部组件的层次与功能、内存内部结构、存储内部结构、高级锁等。优化器是任何数据库执行SQL的关键部分,本书对优化器产生的各种执行计划进行了详细解读,这对理解DB2内部工作大有裨益。同时,本书还介绍了DB2各种诊断工具的使用,各种数据库配置参数的含义及调整、数据库系统视图等。本书结构第1章:DB2进程和内存结构。本章介绍了DB2系统在不同平台上的进程模型。面对众多的进程/线程,DB2将进程划分为与操作系统相关、与实例相关、与数据库相关和与应用程序相关的几类进程。本章还研究了DB2代理通信的工作原理,以及几个经常混淆的概念——事务、应用程序、代理之间的关系。本章最后介绍与DB2备份、恢复、LOAD等实用程序有关的进程,并提及DB2V9.5及以后版本使用的多线程体系结构。另外本章还从全局角度介绍了DB2非常重要的内存结构,这对理解DB2的内部运行机制非常有帮助。第2章:DB2数据库设计。本章全面介绍了如何对数据库进行物理设计和逻辑设计,以达到最优的数据库设计。第3章:表的高级特性。表分区和表压缩是DB2V9.1及以后版本具有的重要特性,在数据量偏大的数据库中这两个技术已经成为不可或缺的、必须使用的提升数据库管理和性能的手段。本章对这两个技术做了详细介绍。第4章:分区数据库。分区数据库(DPF)是DB2针对数据仓库提供的专门技术,基于Share Nothing的设计理念,为我们提供了非常高效的并行计算架构。本章从原理到设计方法,最后提供了一些最佳实践供大家参考。第5章:DB2HADR。DB2HADR提供了成熟的数据库级别的高可用灾备技术方案。为我们提供了很好的高可用或灾备选择。本章从原理、设计和配置过程等几个方面做了介绍。第6章:锁和并发。本章介绍了DB2在读取、写数据时加锁的工作过程,讲述锁在DB2的内部结构以及在不同平台、位长上的区别,并且介绍了DB2中的改锁机制以及提升并发处理能力的方法和设置。第7章:DB2高级监控。DB2中除了最基本的快照之外,还提供其他各种监控工具以获取数据库中的各种运行状态和信息,例如事件监控、db2pd等工具。第8章:DB2故障诊断。本章提供了诊断DB2故障的思路和方法,并介绍了主要的故障诊断工具的使用方法,例如db2pd、db2trc、db2dart等。第9章:数据库安全。本章介绍DB2数据库中的安全机制和设计,以及如何进行安全相关的设置和维护。第10章:DB2常见问题总结。本章介绍了DB2中的一些常见问题及其处理办法,为我们提供一些问题分析的思路和解决问题的办法,进而开阔我们的思路。致谢本书在出版的过程中得到了清华大学出版社王军编辑的大力支持!这套DB2书籍从选题、审稿到出版无不得到他的热心帮助,在此致以深深的谢意!感谢我的好兄弟骆洪青和袁春光,他们审核了书中的大部分章节。同时也感谢中信银行的胡瑞娟、苏兰芳和我的师弟林春,他们审核了部分章节并从用户的角度给我提出了很多宝贵的建议!最后,谨以此书献给我可爱的女儿,她是个小天使,是上天对我最好的恩赐!

内容概要

数据库内核是数据库系统稳定运行的心脏,DB2数据库内核庞大而复杂。本书从DB2内核组件入手,同时介绍了其与操作系统在进程、共享内存、信号量之间的关系。作者在本书中重点介绍了各个内部组件的层次与功能、内存体系结构、存储内部结构、高级锁等。优化器是任何数据库执行SQL的关键部分,本书对优化器产生的各种执行计划进行了详细解释,这对于理解DB2内部工作原理大有裨益。同时,本书还介绍了DB2各种诊断工具的使用,各种数据库配置参数的含义及调整、数据库系统视图等。

作者简介

牛新庄,国内顶尖数据架构和信息治理专家,担任对外经济贸易大学客座教授、北京交通大学兼职教授、中国DB2用户协会(CDUG)理事长、亚洲金融合作联盟信息科技委员会主任。2008年曾以217万年薪受聘于中国建设银行总行特聘技术顾问,2009年受邀加入中国民生银行总行科技部,现任总行科技部总经理。牛新庄博士拥有20多项国际厂商认证(包括DB2V5~V9的全部认证),获得过国内数据库领域最高荣誉的“2006年中国首届杰出数据库工程师奖”、“首届IBM杰出软件专家奖”、“2006年IT168技术卓越奖”等奖项。

书籍目录

第1章 DB2进程和内存结构11.1 DB2 进程体系结构11.1.1 DB2进程技术模型11.1.2 与操作系统相关的进程31.1.3 与实例相关的进程和线程51.1.4 与数据库相关的进程和线程61.1.5 与应用程序相关的进程91.1.6 监控EDU运行的SQL语句101.1.7 收集进程/线程堆栈信息121.2 代理程序通信131.2.1 代理程序概述131.2.2 代理程序相关配置参数131.2.3 应用程序、代理程序和事务161.2.4 代理和连接的常见问题与优化171.3 实用程序相关进程211.3.1 LOAD相关进程211.3.2 备份/恢复相关进程261.4 DB2内存体系结构291.4.1 实例共享内存301.4.2 数据库共享内存311.4.3 应用程序共享内存361.4.4 代理私有内存381.4.5 代理程序与应用程序之间通信时的内存401.4.6 共享内存与私有内存401.5 内存集、内存池和内存块421.5.1 实例级内存集431.5.2 跟踪内存使用461.5.3 定位内存泄漏481.5.4 数据库级内存集491.6 内存案例分析511.7 内存自动调优531.8 本章小结55第2章 DB2数据库设计572.1 DB2存储内部结构572.1.1 DB2存储层次结构572.1.2 表空间存储结构592.1.3 SMS表空间的存储结构592.1.4 DMS表空间头部信息592.1.5 DMS表空间映射602.1.6 表空间的高水位标记612.1.7 RID格式612.1.8 索引叶的内部结构622.2 数据库物理设计632.2.1 表空间容器的放置原则632.2.2 数据库物理设计原则632.3 数据库逻辑设计642.3.1 缓冲池设计原则642.3.2 表空间设计原则692.3.3 索引设计原则792.4 其他高级设计技术812.4.1 表分区及应用案例812.4.2 索引分区及应用案例832.4.3 数据库分区及应用案例862.4.4 多维群集(MDC)及应用案例882.4.5 表分区和多维集群表的使用922.4.6 物化查询表及应用案例962.4.7 MDC、数据库分区、MQT和表分区配合使用1002.4.8 表压缩和索引压缩1112.5 总结111第3章 表的高级特性1133.1 表分区的概念1133.1.1 定义1133.1.2 优点1143.2 分区表的基本用法1153.2.1 创建基本表分区1153.2.2 定义分区表空间和分区键1183.2.3 执行计划1233.2.4 将现有表和视图迁移到分区表1263.3 分区表的管理1283.3.1 分区转出1283.3.2 分区转入1303.3.3 分区索引1323.3.4 分区重组1353.4 分区表detach的常见问题1403.4.1 分区主表关联有强制外键约束1403.4.2 分区主表含有非自动刷新的MQT1413.4.3 分区主表含有自动刷新的MQT1413.4.4 主表或主表的分区正在被其他事务以非UR的隔离级别读取1423.5 行压缩1423.5.1 概念1433.5.2 启用或禁用行压缩1443.5.3 创建数据字典1463.5.4 评估压缩空间1483.5.5 检查压缩状态1503.6 表压缩应用案例1513.7 索引压缩及应用案例1603.8 本章小结163第4章 分区数据库1654.1 DB2 DPF多分区基本架构和相关概念1654.1.1 DB2 DPF基本架构1654.1.2 DB2 DPF数据的分布键以及数据倾斜问题1664.1.3 DB2 DPF数据库并行I/O1684.1.4 DB2 DPF数据库的扩展性1694.2 DB2 DPF多分区应用1704.3 配置DB2 DPF多分区环境1724.3.1 DB2 DPF安装准备1724.3.2 DB2 DPF环境搭建1744.3.3 创建表空间和缓冲池1774.3.4 DB2 DPF最佳实践1784.4 本章小结193第5章 DB2 HADR1955.1 HADR的设计理念1955.1.1 什么是高可用性1955.1.2 HADR的原理1975.1.3 HADR的日志处理模式1985.1.4 HADR的限制2005.2 HADR典型场景的搭建2005.2.1 对基础环境的要求2015.2.2 HADR的配置参数2015.2.3 复制PRIMARY数据库2025.2.4 启动STANDBY2035.2.5 启动PRIMARY2045.3 HADR的维护2045.3.1 监控HADR2045.3.2 HADR的切换方式2095.3.3 切换后对应用产生的影响2105.3.4 HADR状态2115.3.5 HADR异常状态的处理2115.4 HADR性能调优2125.4.1 接收缓冲2125.4.2 网络相关2125.4.3 内部参数2125.4.4 表和表空间的调整2135.5 HADR高可用案例分享2135.5.1 HADR结合PowerHA2145.5.2 HADR结合TSA218第6章 锁和并发2236.1 锁的概念2236.1.1 数据一致性2236.1.2 事务和事务边界2246.1.3 锁的概念2266.2 锁的属性、策略及模式2316.2.1 锁的属性2316.2.2 加锁策略2316.2.3 锁的模式2316.2.4 如何获取锁2346.2.5 锁的兼容性2366.3 隔离级别(Isolation Levels)2376.3.1 可重复读(RR-Repeatable Read)2376.3.2 读稳定性(RS-Read Stability)2386.3.3 游标稳定性(CS-Cursor Stability)2406.3.4 当前提交(Currently Committed)2416.3.5 未提交读(UR-Uncommitted Read)2426.3.6 隔离级别的摘要2446.4 锁转换、锁等待、锁升级和死锁2466.4.1 锁转换及调整案例2466.4.2 锁升级及调整案例2486.4.3 锁等待及调整案例2516.4.4 死锁及调整案例2536.5 锁相关的性能问题总结2576.6 锁与应用程序设计2596.7 锁监控工具2626.8 最大化并发性2666.8.1 选择合适的隔离级别2666.8.2 尽量避免锁等待、锁升级和死锁2666.8.3 设置合理的注册表变量2676.9 锁和并发总结275第7章 DB2高级监控2777.1 从系统函数和视图获取监控信息2777.1.1 利用表函数监控2777.1.2 性能管理视图2807.2 监控指标和案例2817.2.1 一些常用的监控指标和语句2817.2.2 编写脚本以获取监控信息2877.3 db2pd及监控案例2897.3.1 db2pd概述2897.3.2 db2pd监控案例2907.4 事件监视器及监控案例3017.4.1 事件监视器的创建方法和步骤3027.4.2 事件监控器案例3037.4.3 编写脚本从事件监控器中获取监控信息3067.5 db2mtrk及监控案例3087.6 DB2高级监控总结310第8章 DB2故障诊断3118.1 DB2故障诊断机制3118.1.1 故障诊断相关文件3118.1.2 设置故障诊断级别3208.2 深入讲解故障诊断文件3258.2.1 解释管理通知日志文件条目3258.2.2 解释诊断日志文件条目3268.3 故障诊断工具3298.3.1 使用db2support收集环境信息3298.3.2 db2ls和db2level3308.3.3 使用db2diag分析db2diag.log文件3318.3.4 DB2内部返回码3378.4 故障诊断分析流程3398.4.1 故障诊断流程3398.4.2 结合系统事件判断3428.4.3 结合系统运行状况诊断3428.5 案例分析3438.6 本章小结347第9章 数据库安全3499.1 DB2安全机制概述3509.2 认证(authentication)3529.2.1 什么时候进行DB2身份认证3529.2.2 DB2身份认证类型3539.3 权限(authorization)3589.3.1 权限层次3589.3.2 实例级权限3599.3.3 数据库级权限3659.4 特权(privilege)3689.4.1 特权层次结构3689.4.2 授予特权3709.4.3 撤销特权3749.4.4 显式特权/隐式特权间接特权3769.4.5 静态和动态SQL特权考虑因素3799.4.6 维护特权/权限3819.5 某银行安全规划案例3859.6 执行安全审计(db2audit)3879.6.1 实例级审计3879.6.2 数据库级审计3929.7 基于标签的访问控制(LBAC)及案例3959.8 本章小结401第10章 DB2常见问题总结40310.1 实例常见问题和诊断案例40310.1.1 实例无法启动问题总结40310.1.2 实例无法正常终止40410.1.3 实例启动报SQL1042C错误40410.1.5 实例崩溃问题40510.2 数据库常见问题总结40610.2.1 数据库日志空间满SQL0964C错误40610.2.2 数据库时区和时间40710.2.3 中文乱码和代码页转换40810.2.4 通讯错误SQL30081N41110.2.5 数据库备份、前滚暂挂41210.2.6 数据库活动日志删除41210.2.7 数据库损坏(数据页索引页)SQL1043C41210.2.8 索引重新构建问题41410.2.9 DB2实用程序不可用41510.2.10 快速清空表数据41510.2.11 表和索引统计信息不一致41610.2.12 表空间高水位问题41710.3 表空间状态42110.3.1 backup pending42210.3.2 脱机(offline and not accessible)42210.3.3 quiesced exclusive | share | update42310.3.4 restore pending和storage must be defined42310.3.5 rollforward pending42410.3.6 表空间状态总结42410.4 LOAD期间表状态总结42410.4.1 check pending42510.4.2 load pending42510.4.3 load in progress42610.4.4 not load restartable42610.4.5 read access only42710.4.6 unavailable42810.5 锁相关问题42810.5.1 锁升级42810.5.2 锁等待问题解决流程42810.5.3 死锁42910.6 内存常见问题42910.6.1 bufferpool设置过大导致数据库无法启动42910.6.2 排序溢出42910.6.3 锁内存不足43010.7 备份恢复常见问题43010.8 数据移动常见问题总结43110.8.1 标识列43110.8.2 生成列43510.8.3 大对象43810.8.4 空值处理44010.8.5 定界符注意问题44310.8.6 PC/IXF注意问题44610.8.7 代码页不同注意事项44810.8.8 日期格式44910.8.9 XML问题45110.9 安全常见问题总结45310.9.1 从PUBLIC撤销隐式的权限和特权45410.9.2 保护系统编目视图45610.9.3 创建实例用户并显式指定组45710.9.4 为SYSxxx_GROUP参数使用显式值45710.9.5 跟踪隐式特权45810.9.6 不授予不必要的特权45910.9.7 使用加密的AUTHENTICATION模式46010.9.8 使用独立ID创建和拥有对象46110.9.9 使用视图控制数据访问46210.9.10 使用存储过程控制数据访问46310.9.11 使用LBAC控制数据访问46410.9.12 对重要敏感数据进行加密46510.10 SQL0805和SQL0818错误

编辑推荐

《高级进阶DB2:内部结构、高级管理与问题诊断(第2版)》编辑推荐:国内最权威的DB2图书,由业界领军人物牛新庄博士执笔。针对DB2技术的最新发展和上一版的读者反馈,对全书内容和章节安排做了更新,更加贴近实用。DB2从业人员的必备案头书。

图书封面

评论、评分、阅读与下载


    高级进阶DB2(第2版)——内部结构、高级管理与问题诊断 PDF格式下载


用户评论 (总计1条)

 
 

  •   纸张还可以,封面不太好,像盗版的,旧黄
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7