书刊介绍
《Oracle数据库性能优化方法论和最佳实践》内容简介
Oracle性能优化一直是Oracle数据库实践中相对困难和神秘的领域,即使是资深DBA,部分也对性能优化存有一定的疑惑和迷茫,缺乏科学的优化方法论指导则是构成该困境的主要原因。本书通过案例和实践介绍科学的优化方法论,使大家更深入地理解Oracle性能优化,并形成自己的知识体系!掌握优化的必备技能,不再是大师的专利。
本书从性能优化的困境和传统性能优化方法论的不足出发,详细介绍全球首创的基于流程、资源和组件的最新Oracle性能优化方法论,并为之构建了完整的性能优化方法论衡量体系。
深入分析完整的性能优化指标监控体系,帮助读者在日常运行中实践。
内容超越Oracle的知识体系,还介绍了大量操作系统和硬件资源的相关知识和经验。
每章都包含大量来自实践的一线性能优化案例和可以重现的研究性测试案例,方便读者学习和实践。
柳遵梁,杭州美创科技有限公司总经理,15年的DBA经历,擅长性能优化、数据安全、容灾备份、自动化运维、大数据分析等领域。在国内率先实践OWI和RTA性能优化方法论,并开创性提出了基于流程、资源和组件分析的优化方法论。关注容灾领域,构想了灾备一体化、全业务切换、桌面演练、双活等关键容灾技术并在美创科技产品上实现,关注数据安全和敏感数据保护,关注大数据分析作用于日常运营管理。
潘敏君,杭州美创科技有限公司高级DBA,团队主管,偶然碰触oracle,一搞就是7年,细细品味oracle,逐渐形成了自己的一套理论与方法。深入理解oracle体系架构及原理,精通系统级的性能优化,长于使用各种工具、事件跟踪排错故障,精通异常数据库的恢复与灾难挽救。关注容灾,数据安全及自动化运维,对闪存卡在企业中的应用有较深入的研究,并协助同事开发基于x86架构的数据库一体机实现了高性价*的横向扩展能力,现已到达商用阶段。带领团队成员处理各种数据库问题,具有极为丰富的Oracle数据库支持经验。
应以峰,杭州美创科技有限公司高级DBA,团队主管,Oracle10gOCM,拥有5年的数据库领域从业经验,精通Oracle数据库原理,擅长从等待事件角度分析诊断Oracle性能问题,对Oracle的OWI、SQL调优等技术有丰富的知识积累和研究,对ORACLERAC高可用架构体系有着较深的造诣。负责运维美创核心客户的海量数据库,负责美创高可用双机双柜部署实施、故障处理、性能优化等工作。作品目录
前言
第1章:Oracle性能优化漫谈
1.1、从生活场景漫谈性能优化
1.1.1、从一个真实病例说起
1.1.2、如何改善宝马汽车的运行速度
1.2、性能优化目标的确定和衡量
1.2.1、性能优化的范畴或优化对象确定
1.2.2、性能优化目标的用户期望管理
1.2.3、性能优化的目标衡量
1.3、吞吐量和响应时间
1.3.1、吞吐量
1.3.2、响应时间
1.3.3、吞吐量和响应时间关系曲线
1.3.4、医院挂号窗口的吞吐量和响应时间曲线
1.3.5、tpcc测试的吞吐量和响应时间曲线
1.3.6、磁盘I/O系统吞吐量和响应时间曲线
1.4、Oracle性能优化工作的分类
1.4.1、上线优化或从未达到过性能期望的系统优化
1.4.2、响应速度逐步变慢的系统优化
1.4.3、运行过程中突然变慢的系统优化
1.4.4、突然变慢,持续一段时间后又恢复正常的业务系统优化
1.4.5、基于降低资源消耗的系统优化
1.4.6、预防性日常性能优化
1.5、测量和变化
1.5.1、测量和性能
1.5.2、变化检测和性能优化
1.5.3、量变和质变
1.6、基线管理
1.6.1、基准点和基线
1.6.2、沟通基线
1.6.3、基线管理和动态基线
1.7、Oracle性能优化的神话和误区
1.7.1、艺术和科学
1.7.2、Oracle业务系统性能优化是高手的专利
1.7.3、测试系统性能很好,生产系统为什么不行
1.7.4、针对特定性能问题的标准解决方案
1.7.5、只要资源充足,数据库性能就不会差
1.7.6、只要数据库性能好,业务系统性能必然良好
1.7.7、降低等待时间就可以提高业务系统性能
第2章:Oracle性能优化方法论的发展
2.1、基于局部命中率分析的优化方法论
2.2、基于OWI的优化方法论
2.2.1、OWI优化方法论简述
2.2.2、OWI方法论的可检测体系
2.2.3、OWI方法中wait
event的发展
2.3、响应时间分析优化方法论
2.3.1、RTA方法论简述
2.3.2、RTA方法论的不足和改善
2.4、基于工作单元的响应时间分析优化方法论
2.4.1、UOWTBA优化方法论的导入
2.4.2、输入吞吐量指标的选择
2.4.3、采用UOWTBA优化方法工作
2.5、基于资源瓶颈分析的优化方法论
2.5.1、基于资源瓶颈分析优化方法论简述
2.5.2、主要的数据库服务资源供给
2.5.3、有效运行资源瓶颈分析优化方法
2.6、流程、资源和组件优化方法论
2.6.1、吞吐量和响应时间关系曲线
2.6.2、流程和流程响应分析
2.6.3、资源分析
2.6.4、组件
第3章:流程分析之数据库登录流程
3.1、数据库登录导致业务系统性能恶化案例分享
3.2、数据库登录流程的相关指标与优化
3.2.1、数据库登录流程的输入吞吐量和输出响应指标
3.2.2、输入压力与输出响应之间的关系
3.2.3、数据库登录流程响应问题的优化案例
第4章:流程分析之数据访问处理流程
4.1、数据访问处理流程优化案例分享
4.2、数据访问处理流程的分解
4.3、数据访问处理流程的输入和输出
4.3.1、输入单元和输出单元的确定
4.3.2、输入和输出指标的测量
4.3.3、输入和输出指标的关系曲线
4.4、数据访问流程优化步骤
4.5、客户端运行和响应阶段
4.5.1、子流程过程性分解
4.5.2、子流程的输入和输出指标
4.5.3、相关资源和组件
4.5.4、业务请求和响应阶段优化案例
4.6、SQL语句分析阶段(parse阶段)
4.6.1、parse阶段子流程分解
4.6.2、hard
parse/soft
parse/soft
soft
parse/no
parse的区别
4.6.3、SQL语句parse的高版本
4.6.4、复杂语句和简单语句的parse差异
4.6.5、parse阶段的输入/输出指标
4.6.6、parse阶段的优化道路
4.6.7、相关资源和组件
4.6.8、parse阶段优化案例分析
4.7、SQL语句执行阶段(execute阶段)
4.7.1、SQL执行阶段子流程分解
4.7.2、SQL执行子流程输入/输出指标
4.7.3、SQL执行子流程的输入/输出指标衡量
4.7.4、SQL执行阶段输入/输出关系图
4.7.5、SQL执行阶段的优化道路
4.7.6、SQL执行阶段相关资源和组件
4.7.7、SQL执行阶段优化案例
4.8、fetch次数对逻辑读的影响
4.9、提交(Commit)阶段的流程分解和分析
4.9.1、提交阶段的主要执行过程
4.9.2、高并发性提交的响应问题
4.9.3、提交阶段的优化道路
第5章:资源
5.1、简单的资源供给类
5.1.1、资源使用的突变曲线
5.1.2、资源的使用率和队列长度
5.1.3、导致资源供给性能问题的主要场景
5.2、并发性资源
5.2.1、并发性资源效率的衡量
5.2.2、主要的并发性资源和响应突变曲线
第6章:资源供给:CPU
6.1、简单案例分享
6.2、CPU的特殊性
6.3、CPU的工作和运行性能的衡量
6.3.1、CPU的主要工作
6.3.2、CPU运行性能的衡量:利用率和运行队列长度
6.3.3、CPU的运行性能曲线
6.4、CPU资源的主要衡量指标
6.4.1、CPU的主要性能衡量指标
6.4.2、CPU的主要性能衡量指标的测量
6.4.3、CPU相关的主要Oracle指标
6.5、几个CPU资源常见问题的讨论
6.5.1、CPU资源的100%利用率
6.5.2、CPU运行队列的长度标准
6.5.3、CPU
sys部分的资源消耗问题
6.6、CPU资源优化的目标和道路
6.6.1、CPU资源问题的场景和优化道路
6.6.2、降低CPU的输入压力
6.6.3、分布局部的CPU输入压力
6.6.4、提高CPU处理效率
6.6.5、合理调度平缓化CPU使用
6.7、CPU资源优化案例
第7章:资源供给:内存和虚拟内存
7.1、简单案例分享
7.2、物理内存和虚拟内存
7.3、简单的虚拟内存管理
7.3.1、工作存储分页和永久存储分页
7.3.2、计算分页和非计算分页
7.3.3、页面大小和大页管理
7.3.4、进程内存管理
7.4、虚拟内存运行性能的衡量
7.4.1、虚拟内存运行性能
7.4.2、虚拟内存的运行性能曲线
7.5、虚拟内存资源的主要衡量指标
7.5.1、虚拟内存的主要性能衡量指标
7.5.2、虚拟内存主要性能衡量指标的测量
7.5.3、虚拟内存相关的主要Oracle指标
7.6、几个虚拟内存资源常见问题的讨论
7.6.1、有128GB的内存,为什么自由空间还是很少
7.6.2、Oracle业务系统环境下的文件系统缓冲
7.6.3、如何从AWR报告中发现可能存在的虚拟问题
7.6.4、如何检测和发现内存泄漏
7.7、虚拟内存资源优化的目标和道路
7.7.1、虚拟内存资源问题的场景和优化道路
7.7.2、合理配置内存分配参数,避免发生swapin和swapout
7.7.3、合理分配内存,让内存的使用处于安全可控的范围
7.7.4、充分利用内存,提高业务处理程序运行效率
7.7.5、合理调度业务程序,使内存使用平缓化
7.8、虚拟内存资源优化案例
第8章:资源供给:I/O子系统
8.1、简单案例分享
8.2、I/O子系统和构成
8.3、卷管理器和文件系统
8.3.1、卷管理器
8.3.2、文件系统和逻辑卷
8.4、HBA、SAN交换机及其他存储系统链路通道
8.4.1、HBA和SAN
8.4.2、NIC和网络交换机
8.4.3、IB和IB交换机
8.5、磁盘和磁盘阵列
8.5.1、磁盘
8.5.2、磁盘的硬件基础性能衡量
8.5.3、磁盘的iops和数据传输率
8.5.4、磁盘平均队列长度
8.5.5、磁盘阵列
8.6、Raid和LUN
8.7、磁盘多路径访问和基于存储的容灾复制影响
8.7.1、磁盘多路径访问
8.7.2、基于存储(卷)的容灾复制系统的影响
8.8、固态硬盘和PCIe
8.8.1、固态硬盘和传统机械硬盘
8.8.2、SSD的简单结构
8.8.3、固态硬盘不是机械设备
8.8.4、固态硬盘不支持原址更新
8.8.5、Oracle和固态硬盘
8.9、随机访问和顺序访问
8.10、基于Oracle数据库的存储系统设计
8.10.1、Oracle
online
redo
logfile和磁盘阵列
8.10.2、临时表空间的存储设计
8.10.3、OLTP业务系统或混合型业务系统
8.10.4、数据仓库或DSS决策系统
8.11、I/O子系统的运行性能衡量
8.11.1、I/O子系统运行性能的衡量指标
8.11.2、I/O子系统的运行性能曲线
8.11.3、I/O资源主要性能衡量指标的测量
8.11.4、I/O子系统相关的主要Oracle指标
8.12、几个I/O子系统资源常见问题的讨论
8.12.1、I/O资源极度紧张但I/O
wait表现不高
8.12.2、发现大量的磁盘Cache但似乎Oracle不理会
8.12.3、磁盘利用率为100%,但处理能力还在不断上涨
8.12.4、如何发现因存储系统导致的性能故障
8.13、I/O子系统资源优化的目标和道路
8.13.1、I/O资源问题的场景和优化道路
8.13.2、明确存储故障,修正配置或修复存储
8.13.3、降低存储系统的全局I/O压力
8.13.4、分布存储系统压力,使每个I/O设备处于合理范畴
8.13.5、合理调度业务程序,使I/O资源使用平缓化
8.14、I/O子系统资源优化案例
第9章:资源供给:网络子系统
9.1、简单案例分享
9.2、网络子系统和构成
9.2.1、网卡、网络交换机(路由器)和网络
9.2.2、网络延迟和吞吐量
9.2.3、高速内联网和业务网络
9.2.4、在低速网络下运行业务
9.3、网络协议:TCP、UDP和NFS
9.3.1、TCP
9.3.2、UDP
9.3.3、NFS
9.4、网络参数配置和运行性能
9.4.1、RTT、Bandwidth和BDP
9.4.2、主要的网络参数
9.4.3、主要的NFS参数
9.5、网络带宽的扩展
9.5.1、网卡绑定类型
9.5.2、负载均衡模式网卡绑定配置
9.5.3、负载均衡模式网卡绑定测试
9.6、主要的网络性能监视工具
9.7、网络子系统的运行性能衡量
9.7.1、网络子系统运行性能的衡量指标
9.7.2、网络子系统的运行性能曲线
9.7.3、网络资源主要性能衡量指标的测量
9.7.4、网络子系统相关的主要Oracle指标
9.8、几个网络子系统资源常见问题的讨论
9.8.1、系统中总是有SQL*Net
message
from
client事件
9.8.2、如何发现过量的网络交互引起的响应缓慢
9.8.3、C语言处理数据的效能远远低于数据库存储过程
9.9、网络子系统资源优化的目标和道路
9.9.1、网络资源问题的场景和优化道路
9.9.2、明确网络故障,修正配置或修复存储
9.9.3、降低网络系统的全局输入压力
9.9.4、分布网络系统压力,使每个网络设备处于合理范畴
9.9.5、设置最佳的网络配置参数,使网络设备运行效率最佳
9.10、网络子系统资源优化案例
第10章:资源供给:队列锁
10.1、简单案例分享
10.2、并发性控制和队列锁
10.2.1、锁资源和锁资源的访问
10.2.2、锁资源的感知
10.2.3、队列锁相关的资源参数
10.2.4、队列锁、事务锁和DML表格锁
10.2.5、锁模式和意向锁
10.2.6、主要的Oracle队列锁
10.3、事务锁
10.3.1、行锁和不加锁的一致性读
10.3.2、TX锁冲突
10.3.3、死锁
10.3.4、基于TX
lock的统计、事件和视图
10.3.5、TX
lock资源冲突的优化道路
10.4、TM锁
10.4.1、TM
lock作用模式和作用场合
10.4.2、dml_locks参数和TM
lock
10.4.3、ora-00054和TM
lock
10.4.4、TM
lock的统计、等待事件和视图
10.4.5、TM
lock资源的优化
10.5、sequence相关的锁
10.5.1、SQ
lock
10.5.2、sequence导致的row
cache
lock
10.5.3、DFS
lock
handle和SV
lock
10.5.4、sequence相关的统计、等待事件和视图
10.5.5、sequence相关锁资源的优化
10.6、HW
lock和ST
lock
10.6.1、高水位的概念和高水位的移动
10.6.2、HW
lock冲突
10.6.3、HWM和全表扫描
10.6.4、HW
lock相关统计、等待事件和视图
10.6.5、HW
lock资源的优化之道
10.7、CF
lock
10.7.1、CF
lock的作用场景
10.7.2、rman备份或控制文件自动备份和CF
lock
10.7.3、dump
current
redo
log持有CF
lock
10.7.4、CF
lock相关统计、等待事件和视图
10.7.5、CF
lock资源的优化之道
10.8、US
lock
10.8.1、隐含参数_undo_autotune和参数undo_retention
10.8.2、事件10511和10512、10.9、RO
lock
10.9.1、RO
lock资源性能的相关因素
10.9.2、RO
lock涉及的主要事件
10.10、队列锁运行性能的衡量
10.10.1、队列锁运行性能的衡量指标
10.10.2、队列锁资源的运行性能曲线
10.10.3、队列锁运行性能衡量指标的测量
10.11、队列锁资源优化的目标和道路
10.11.1、业务压力导致锁资源冲突
10.11.2、业务不当导致过多持有队列锁
10.11.3、持有队列锁的时间过长
10.11.4、缺乏事务失败思维导致事务规模过大
10.11.5、调度和运维不当导致队列锁长期持有
10.11.6、拥有队列锁资源的进程处于僵死或不活动状态
10.12、队列锁资源优化案例
第11章:资源供给:row
cache
lock和library
cache
lock
11.1、简单案例分享
11.2、row
cache
lock和ddl
lock
11.2.1、row
cache的组成
11.2.2、row
cache
lock涉及的视图
11.2.3、row
cache
lock冲突的排查
11.3、library
cache
lock
11.3.1、library
cache
lock和锁模式
11.3.2、library
cache
lock的场景观察
11.3.3、library
cache
lock涉及的视图
11.3.4、library
cache
lock故障的排查和优化
11.4、row
cache
lock和library
cache
lock运行性能的衡量
11.4.1、row
cache
lock资源运行性能的衡量指标
11.4.2、library
cache
lock资源运行性能的衡量指标
11.4.3、row
cache
lock锁运行性能衡量指标的测量
11.4.4、library
cache
lock运行性能衡量指标的测量
11.5、row
cache
lock锁资源优化的目标和道路
11.5.1、数据字典的变化
11.5.2、降低row
cache
object的重载
11.6、library
cache
lock锁资源的目标和道路
11.7、row
cache
lock和library
cache
lock锁资源优化案例
第12章:资源供给:buffer
lock
12.1、简单案例分享
12.2、buffer
header和buffer
lock(pin)
12.2.1、buffer
header和buffer
lock
12.2.2、buffer
lock的锁兼容
12.3、buffer
lock冲突的简单验证
12.3.1、select和select操作
12.3.2、select和update操作
12.3.3、update和update之间
12.4、buffer
lock运行性能的衡量和测量
12.4.1、buffer
lock冲突的buffer
block类型
12.4.2、buffer
lock资源运行性能的衡量指标
12.4.3、buffer
lock锁资源运行性能衡量指标的测量
12.5、buffer
lock锁资源优化的目标和道路
12.5.1、降低buffer
lock锁资源需求
12.5.2、分散buffer
lock局部热点,降低buffer
lock并发性冲突
12.5.3、降低buffer
lock的持有时间
12.5.4、read
by
other
session的buffer
lock冲突
12.6、buffer
lock锁资源优化案例
第13章:资源供给:latch
13.1、简单案例分享
13.2、并发性控制资源:latch或spinlock
13.2.1、latch获得和释放的基本过程
13.2.2、latch结构
13.2.3、CAS、TAS及latch的spin
13.2.4、Willing-To-Wait和no-Wait
latch
13.3、latch的spin和spin_count控制
13.3.1、latch的spin和spin_count控制
13.3.2、不同latch的spin
count细粒度控制
13.3.3、x$ksllclass视图和其他latch参数
13.3.4、spin_count参数的合理设置
13.4、latch资源冲突和性能优化
13.4.1、latch冲突的简单认知
13.4.2、常见的latch冲突
13.4.3、latch性能相关的统计数据
13.4.4、几张主要的latch视图
13.5、主要的latch资源场景和冲突
13.5.1、Cache
buffers
chains
latch
13.5.2、cache
buffer
lru
chains
latch
13.5.3、library
cache(lock/pin)latch
13.5.4、shared
pool
latch
13.5.5、row
cache
objects
latch
13.5.6、undo
global
data
latch
13.5.7、object
queue
header
operation
latch和checkpoint
queue
latch
13.6、latch资源运行性能的衡量
13.7、latch资源优化的目标和道路
13.7.1、降低latch资源需求
13.7.2、分布热点latch资源
13.7.3、降低latch资源的持有时间
13.7.4、spin_count和latch资源优化
13.8、latch资源优化案例
第14章:资源供给:mutex
14.1、简单案例分享
14.2、并发性控制资源:mutex
14.2.1、Oracle
11gR2中包含的mutex
14.2.2、mutex的工作方式
14.3、mutex对应的wait
event说明和场景
14.3.1、mutex对应的wait
event描述
14.3.2、cursor:pin
S事件
14.3.3、cursor:mutex事件和library
cache:mutex事件
14.3.4、hash
table
mutex、cursor:mutex
S|X和SQL高版本
14.4、mutex资源冲突和性能优化
14.4.1、常见的mutex冲突
14.4.2、mutex性能相关的统计数据
14.4.3、主要的mutex视图
14.5、主要的mutex资源场景和冲突
14.5.1、cursor
pin
mutex
14.5.2、cursor
parent
mutex
14.5.3、hash
table
mutex
14.5.4、cursor
stat
mutex
14.6、mutex资源的运行性能衡量和测量
14.6.1、mutex资源运行性能衡量的主要指标
14.6.2、mutex资源运行性能衡量指标的测量
14.7、mutex资源优化的目标和道路
14.7.1、降低mutex资源需求
14.7.2、分布热点mutex资源
14.7.3、减少mutex资源的持有时间
14.8、mutex_spin_count、sleep_time、scheme和mutex资源优化
14.9、mutex资源优化案例