基本而言,我们可以把所有的业务都表述为流程,业务系统性能优化本质上是一个流程改善的过程。任何流程改善的目标或者提高效率或者降低成本,而且提高效率和降低成本两者在大部分情况下会有一致性的表现,只是流程改善的目的不同而已。
我们把业务在Oracle数据库的处理过程视同流程,性能优化的过程就是一个流程优化和改善的过程。在任何时候,流程分解和时间响应分析都是流程优化和改善的基本工作方法。
流程:为了完成一定的目标按照时间次序的处理过程。
流程分解:每个流程都是一系列的子流程过程,通过流程分解可以把流程逐步细化,直至不可分解为止。
流程优化:通过时间响应分析发现流程问题所在,通过流程分解精细定位,改善流程使之更有效率或者具有更低成本。
流程影响:流程和流程之间存在相互影响的因素,其效率并不是线性增长,而是存在一个影响因子。
从Oracle数据库而言,基本存在三类流程:
(1)、数据库登录流程
(2)、数据库处理流程
(3)、混合流程
6.1、 数据库登录流程过程
Step 1: Client发起登录握手
Step 2: 握手指令以及相关信息传输
Step 3: Listener验证阶段
Step 4: 服务进程派生阶段
Step 5: 用户验证阶段
Step 6: Session审计阶段
Step 7: 登录触发器阶段
Step 9: 响应返回阶段
6.2、 数据库处理流程过程
Step 1: Client处理并发起数据库指令
Step 2: 指令传输
Step 3: 应用服务器处理阶段
Step 4: 数据库处理阶段
Step 4.1:Parse阶段
Step 4.2:Execute阶段
Step 4.3:Fetch阶段或者Commit阶段
Step 5: 结果返回应用服务器
Step 6: 应用服务器返回给客户端
Step 7:重复Step 1~Step 6
6.3、 混合处理流程
混合处理流程就是业务流程中包含了数据库登录流程和数据库处理流程过程。常见的混合流程包括:
(1)、应用账户登录流程
应用账户流程可能包含了数据库登录过程,在某些业务系统设计中,数据库账户登录可能是在应用账户登录的按钮确认之后才发起的。
(2)、Database Link访问
业务流程可能包含了远程的Database Link的访问,在指令发布过程中伴生了一个数据库登录过程。
(3)、应用服务器的预连接通道扩展
当应用服务器无法提供空闲的数据库连接通道的时候,业务流程可能会包含一个数据库登录过程。
6.4、流程分析和时间响应的优化工作方法
Step 1: 判断出现性能变异的流程。
Step 2: 用TBA方法获得主要流程步骤的时间分布
Step 3: 依据时间分布和基线(或者经验)发现存在问题的流程阶段
Step 4: 进一步流程分解
Step 5: 获得时间响应计算:RT:= Service Time + Queue Time(Wait Time)
Step 6: 计算基本工作单元的特征和响应时间
Step 7: 获得对应的资源分布和命中率分布
Step 8: 发现问题
Step 9: 在需要的时候进一步分解流程直至不需要分解为止,并重复Step 5~Step 8
Step 10:依据发现的问题采取对应的优化措施
6.5、优化方向指导(业务处理流程)
Step 1:标记网络传输(包括Client处理)、Parse、Execute、Commit的消逝时间
Step 2:在可调整的资源范畴之内保证可接受的命中率和可接受的资源活动
Step 3:网络传输时间和Client运行时间的确定
对于批处理应用可以直接通过:
SQL*Net Message from Client - DB CPU + SQLNet Message to Client + SQLNet more data to Client + SQL*Net more data from Client来确定
对于交互式应用也可以同样方式处理,但需要注意到该值不准确,但可以用来衡量和数据库时间的比较值。
这些论述也许需要进一步的验证,在后续中会验证其说辞是否正确。
Step 4: Parse时间
Parse Elapse Time
Step 5: Commit Time
Commit Time:= Log File Sync Wait Time
Step 6: Execute Time:= DB Time - Parse Time - Commit Time
Step 7:比较基线,发现问题流程阶段
Step 8:确定问题流程阶段的基本工作单元的访问量和响应时间
Step 9:Parse阶段的基础工作单元
Parse Count/s
Hard Parse Count/s
RT per Parse Count
RT Per Hard Parse Count
Library cache latch Get Count/s
Shared pool latch get Count/s
row cache object latch get count/s
RT per Library cache latch get
RT per Shared pool latch get
RT per row cache object latch get
Execute阶段的基本工作单元
LIO Count/s
PIO Count/s
Execute Count/s
Commit Count/s
Fetch Count/s
Commit阶段的基本工作单元
Commit Wait Time
redo commit write time
6.6、流程和流程之间相互影响的确认
流程和流程之间的相互影响体现为Queue Time,在资源不足的时候会影响到Service Time。
流程和流程之间的相互影响我们可以简化基本为基本工作单元的增加和基本工作单元的RT响应变化。
工作单元的响应曲线体现了流程和流程之间的相互影响。
6.7、流程基本工作单元吞吐量曲线
在日常运行中,为了使流程优化容易进行,日常可以对于基本工作单元的RT进行搜集,以1分,5分或者10分钟为单位进行快照数据搜集,这些获得的数据就构成基本工作单元的吞吐量曲线。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/92650/viewspace-775109/
,如需转载,请注明出处,否则将追究法律责任。