4.1、和 LOG BUFFER 相关的主要 Latch 

有:  Latch:Redo Copy
      Latch:Redo Allocation Latch

4.2 当一个进程在修改数据时候将会产生 Redo,这个 Redo 首先在 PGA 中保存。

然后进程需要 获取Redo Copy Latch(这个Latch的个数由隐含参数_log_simultaneous_copies决定),当获 得 Redo Copy Latch 后,进程接着获取 Redo Allocation Latch 来分配 Redo Log Buffer 中的空间, 空间分配完成后,释放 Redo Allocation Latch。然后进程把 PGA 里临时存放的 Redo 信息复制 到 Redo Log Buffer,复制完成后,释放 Redo Copy Latch。

4.3 逻辑架构如下: 

案例分析:

测试redo中Latch的竞争

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
1、建立测试环境
15:08:51 SYS@ prod >select name ,bytes/1024/1024 from v$sgastat where rownum <6;
NAME                       BYTES/1024/1024
-------------------------- ---------------
fixed_sga                       1.27443695
buffer_cache                            60
log_buffer                       6.0078125
kkj jobq  wor                   .003913879
dpslut_kfdsg                    .000244141
  建立一个最小的日志组
15:09:33 SYS@ prod >select group#,sequence#,status,bytes/1024/1024 from v$log;
    GROUP#  SEQUENCE# STATUS           BYTES/1024/1024
---------- ---------- ---------------- ---------------
         4        108 CURRENT                        4
         5        106 INACTIVE                       4
          
2、建立三张测试表         
15:11:59 SCOTT@ prod >create table tb1 as select * from user_objects;
Table created.
15:13:48 SCOTT@ prod >select count(*) from tb1;
  COUNT(*)
----------
    376832
     
15:19:16 SCOTT@ prod >create table tb2 as select * from tb1 where rownum <100000;
Table created.
15:20:30 SCOTT@ prod >create table tb3 as select * from tb1 where rownum <100000;
Table created.
4、建立测试脚本
[oracle@RH6 ~]$ cat 22.sh
#!/bin/bash
export ORACLE_SID=prod
count=0
while [ $count -lt 1000 ]
do
sqlplus 'scott/tiger'<<EOF
update tb1 set object_id=1000 ;
rollback;
EOF
count=`expr $count + 1`
done
[oracle@RH6 ~]$ cat 33.sh
#!/bin/bash
export ORACLE_SID=prod
count=0
while [ $count -lt 1000 ]
do
sqlplus 'scott/tiger'<<EOF
update tb2 set object_id=1000 ;
rollback;
EOF
count=`expr $count + 1`
done
[oracle@RH6 ~]$ cat 44.sh
#!/bin/bash
export ORACLE_SID=prod
count=0
while [ $count -lt 1000 ]
do
sqlplus 'scott/tiger'<<EOF
update tb3 set object_id=1000 ;
rollback;
EOF
count=`expr $count + 1`
done
5、通过3个session,运行脚本
6、查看session event
15:22:08 SYS@ prod >select sid,username ,event from v$session where username='SCOTT';
       SID USERNAME                       EVENT
---------- ------------------------------ ----------------------------------------------------------------
        31 SCOTT                          log file switch (checkpoint incomplete)
        45 SCOTT                          enq: TX - row lock contention
Elapsed: 00:00:00.00
15:22:14 SYS@ prod >/
       SID USERNAME                       EVENT
---------- ------------------------------ ----------------------------------------------------------------
        31 SCOTT                          log file switch completion
        41 SCOTT                          enq: TX - row lock contention
        44 SCOTT                          log file switch completion
        45 SCOTT                          enq: TX - row lock contention
        47 SCOTT                          log file switch completion
15:23:42 SYS@ prod >/
       SID USERNAME                       EVENT
---------- ------------------------------ ----------------------------------------------------------------
        31 SCOTT                          db file sequential read
        41 SCOTT                          enq: TX - row lock contention
        44 SCOTT                          latch: redo copy
        45 SCOTT                          enq: TX - row lock contention
        47 SCOTT                          latch: redo allocation
15:26:54 SYS@ prod >r
  1* select sid,username ,event from v$session where username='SCOTT'
       SID USERNAME                       EVENT
---------- ------------------------------ ----------------------------------------------------------------
        31 SCOTT                          log file switch completion
        41 SCOTT                          enq: TX - row lock contention
        44 SCOTT                          log file switch completion
        45 SCOTT                          enq: TX - row lock contention
        47 SCOTT                          log file switch completion
         
7、查看redo latch竞争        
15:25:11 SYS@ prod >select name,misses,sleeps,spin_gets,wait_time from v$latch
15:25:34   2   where name in ('redo copy','redo allocation');
NAME                                                                 MISSES     SLEEPS  SPIN_GETS  WAIT_TIME
---------------------------------------------------------------- ---------- ---------- ---------- ----------
redo copy                                                               101        116          0     279828
redo allocation                                                          48         50          0      54560
Elapsed: 00:00:00.02
15:25:53 SYS@ prod >/
NAME                                                                 MISSES     SLEEPS  SPIN_GETS  WAIT_TIME
---------------------------------------------------------------- ---------- ---------- ---------- ----------
redo copy                                                               111        126          0     300388
redo allocation                                                          50         52          0      56124
Elapsed: 00:00:00.01
15:26:08 SYS@ prod >/
NAME                                                                 MISSES     SLEEPS  SPIN_GETS  WAIT_TIME
---------------------------------------------------------------- ---------- ---------- ---------- ----------
redo copy                                                               111        126          0     300388
redo allocation                                                          50         52          0      56124
Elapsed: 00:00:00.00
15:26:12 SYS@ prod >/
NAME                                                                 MISSES     SLEEPS  SPIN_GETS  WAIT_TIME
---------------------------------------------------------------- ---------- ---------- ---------- ----------
redo copy                                                               202        234          0     594703
redo allocation                                                          75         79          0      83114
Elapsed: 00:00:00.00
15:27:58 SYS@ prod >/
NAME                                                                 MISSES     SLEEPS  SPIN_GETS  WAIT_TIME
---------------------------------------------------------------- ---------- ---------- ---------- ----------
redo copy                                                               220        258          0     661577
redo allocation                                                          81         85          0     103697
15:28:29 SYS@ prod >/
NAME                                                                 MISSES     SLEEPS  SPIN_GETS  WAIT_TIME
---------------------------------------------------------------- ---------- ---------- ---------- ----------
redo copy                                                               346        400          1    1174583
redo allocation                                                         146        150          0     189359

 可以看到,在系统中产生了大量的redo latch的争用。

本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1576149,如需转载请自行联系原作者

通过案例学调优之--和 LOG BUFFER 相关的主要 Latch相关推荐

  1. oracle time model,通过案例学调优之--OracleTimeModel(时间模型)

    通过案例学调优之--Oracle Time Model(时间模型) 650) this.width=650;" src="http://www.68idc.cn/help/uplo ...

  2. oracle dbfile数,通过案例学调优之--Oracle参数(db_file_multiblock_read_count)

    通过案例学调优之--Oracle参数(db_file_multiblock_read_count) 应用环境: 操作系统: RedHat EL55 Oracle:   Oracle 10gR2 Ora ...

  3. 通过案例学调优之--AWR baseline对比生成AWR报告

    通过案例学调优之--AWR Baseline对比生成AWR报告     本案例是通过建立AWR Baseline,然后选择不同时段建立AWR report进行对比,对数据库性能变化进行监控和对比. 一 ...

  4. oracle正确使用索引,通过案例学调优之--Oracle中null使用索引

    通过案例学调优之--Oracle中null使用索引 默认情况下,Oracle数据库,null在Index上是不被存储的,当在索引列以"is null"的方式访问时,无法使用索引:本 ...

  5. 通过案例学调优之--Oracle Cluster Table

    通过案例学调优之--Oracle Cluster Table About Clusters A cluster provides an optional method of storing table ...

  6. 通过案例学调优之--SQL Profile

    通过案例学调优之--SQL Profile 一.什么是SQL Profile(概要) SQL Profile在性能优化中占有一个重要的位置. MOS里这么描述SQL Profile: SQL Prof ...

  7. oracle 全文索引 优化,通过案例学调优之--Oracle 全文索引

    通过案例学调优之--Oracle 全文索引 全文检索(oracle text) Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力,Oracle Text 是 Or ...

  8. mysql 查询设置调优_MySQl 查询性能优化相关

    0. 1.参考 缓存一切数据,读取内存而不是硬盘IO 如果你的服务器默认情况下没有使用MySQL查询缓存,那么你应该开启缓存.开启缓存意味着MySQL 会把所有的语句和语句执行的结果保存下来,如果随后 ...

  9. Spark开发性能调优

    Spark开发性能调优 标签(空格分隔): Spark –Write By Vin 1. 分配资源调优 Spark性能调优的王道就是分配资源,即增加和分配更多的资源对性能速度的提升是显而易见的,基本上 ...

最新文章

  1. Mybatis 基本配置, 面向接口
  2. 本地YUM源配置并设置成本地同步网络源,摆脱依赖包
  3. 数据结构-排序(插入排序)
  4. Android Application 对象介绍
  5. day 04 作业 循环和分之
  6. WPF 正確理解ContentPresenter
  7. 《Iterative-GAN》的算法伪代码整理
  8. 红外接收管硬件电路曲折的调试过程,错误的使用过程记录
  9. 天猫精灵开发网关php开发,天猫精灵对接
  10. yshon对讲机如何调频率_对讲机频率怎么调?四步教你给对讲机调频
  11. ios下拉效果滑动滚出页面
  12. Deqin - 接小球游戏
  13. 接上个文章(mzsock
  14. LeetCode 974. 和可被 K 整除的子数组 | Python
  15. Hive启动报错:java.lang.ClassNotFoundException: org.apache.tez.dag.api.TezConfiguration
  16. 无人机寻迹要两个单片机吗_单片机寻迹小车程序
  17. python 动态仪表盘_利用EXCEL的power pivot+切片器制作动态仪表盘
  18. 会PLC也能玩转机器视觉(二)- 条码识别
  19. mac 搭建Elasticsearch 6.8.6
  20. 微信小程序--地理位置获取、导航

热门文章

  1. Spring 的动态数据源实现
  2. Android模拟器PANIC: Could not open:问题解决方法
  3. (翻译) Android ListView 性能优化指南
  4. 苹果官方指南:Cocoa框架(2)(非原创)
  5. RabbitMQ在Windows下设置服务启动
  6. 去掉状态条并全屏_机关单位内必须懂的道理:20条潜规则和13条定律
  7. 五子棋 鼠标 C语言,c语言写的鼠标操作的五子棋游戏,欢迎观赏!
  8. 金融数据分析与挖掘实战练习2.5-2.9
  9. 从月薪3000到月薪30000,web前端应该怎么学?
  10. linux的目录创建时间,LINUX下文件创建时间问题