楼主: guoyJoe

[原创] 逻辑读产生Cache Buffer Chain(简称CBC) Latch的解析

[复制链接]
论坛徽章:
70
夏利
日期:2013-09-29 21:02:15天蝎座
日期:2016-03-08 22:25:51嫦娥
日期:2014-03-04 16:46:45ITPUB年度最佳技术原创精华奖
日期:2014-03-04 16:19:29马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:11
41#
发表于 2013-2-20 20:49 | 只看该作者
本帖最后由 vage 于 2013-2-20 21:10 编辑
itpremier 发表于 2013-2-20 18:19
研究这东西有啥用啊?  我公司的DB性能有问题,你靠这个能解决吗?


能。
除性能问题,更多的用于健康检查,可以从一份AWR报告中看出更多的信息。
还有排故。

举个例子:
Latch Miss Sources

    only latches with sleeps are shown
  • ordered by name, sleeps desc
Latch NameWhereNoWait MissesSleepsWaiter Sleeps
cache buffers chainskcbgtcr: kslbegin excl
0
2,698
2,462
cache buffers chainskcbchg: kslbegin: bufs not pinned
0
508
523
cache buffers chainskcbget: pin buffer
0
110
47
cache buffers chainskcbrls: kslbegin
0
91
185
cache buffers chainskcbchg: kslbegin: call CR func
0
79
345
cache buffers chainskcbgcur: kslbegin
0
54
46
cache buffers chainskcbzwb
0
42
17
cache buffers chainskcbgtcr: fast path
0
27
10
cache buffers chainskcbzgb: scan from tail. nowait
0
26
0
cache buffers chainskcbgtcr: kslbegin shared
0
5
5
cache buffers chainskcbget: exchange
0
3
2
cache buffers chainskcbzib: finish free bufs
0
3
0
cache buffers chainskcbget: exchange rls
0
1
0
cache buffers chainskcbnlc
0
1
5
cache buffers chainskcbzib: multi-block read: nowait
0
1
0
cache buffers lru chainkcbzgws
0
4
0
enqueuesksqies
0
30
30
library cachekgldte: child 0
0
10
10
object queue header operationkcbw_link_q
0
2
0
object queue header operationkcbo_link_q:reget
0
1
0
object queue header operationkcbo_switch_mq_bg
0
1
3
object queue header operationkcbw_unlink_q
0
1
1
redo allocationkcrfw_redo_gen: redo allocation 1
0
1
0
sequence cachekdnnxt: cached seq
0
1
0
session allocationksucri
0
19
31
session allocationksuxds: not user session
0
13
1
session idle bitksupuc: clear busy
0
71
79
session idle bitksupuc: set busy
0
60
51
session idle bitksuxds
0
16
17
shared poolkghupr1
0
2
2
shared pool simulatorkglsim_unpin_simhp
0
1
0
slave class createksvcreate
0
1
0


这是我前一个公司核心库之一,这是Latch Miss的信息,想优化下cache buffers chains Latch的竞争,从这段Latch Miss可以看出来Latch竞争主要原因是物理读,优化的方向是物理读最多的SQL,而不是逻辑读最多的SQL。

还有,下面是一套RAC环境,10.2.0.4,一个节点总是当机,从这个堆栈调用中,可以发现进程正在等待某个事件,可以找出当库前进程的等待事件吗
----- SQL Statement (None) -----
Current SQL information unavailable - no cursor.
----- Call Stack Trace -----
calling              call     entry                argument values in hex      
location             type     point                (? means dubious value)     
-------------------- -------- -------------------- ----------------------------
skdstdst()+64        call     kgdsdst()            000000032 ? 000000004 ?
ksedst1()+432        call     skdstdst()           00000001E ?
                                                   C000000000002C60 ?
                                                   9FFFFFFFFFFFB550 ?
ksedst()+128         call     ksedst1()            C00000123065F668 ?
                                                   C00000123065F668 ?
                                                   000000003 ?
                                                   600000000013F700 ?
                                                   C000000000000814 ?
                                                   4000000005059050 ?
                                                   00004F3DB ?
                                                   C00000123065F668 ?
dbkedDefDump()+1456  call     ksedst()             9FFFFFFFFFFFB710 ?
                                                   000000003 ?
                                                   600000000013F700 ?
                                                   C00000000000040A ?
                                                   4000000003EC44C0 ?
                                                   00004F31D ?
                                                   60000000001251F0 ?
                                                   000000000 ?
ksedmp()+80          call     dbkedDefDump()       000000003 ?
                                                   9FFFFFFFFFFFB710 ?
ssexhd()+2672        call     ksedmp()             9FFFFFFFFFFFC640 ?
                                                   6000000000043FA0 ?
                                                   9FFFFFFFFFFFC6D0 ?
                                                   000000000 ?
                                                   4000000006B00540 ?
                                                   000000045 ? 000000000 ?
                                                   000000018 ?
<kernel>             call     ssexhd()             9FFFFFFFFD54CB68 ?
                                                   C0000016FFF7E958 ?
                                                   60000000001B9F30 ?
                                                   9FFFFFFFFFFFCAE0 ?
skgxpdmpmem()+52481  call     <kernel>             9FFFFFFFFD54CB68 ?
                                                   C0000016FFF7E958 ?
                                                   9FFFFFFFFFFFCAE4 ?
                                                   9FFFFFFFFFFFCB18 ?
                                                   C0000017212BC29C ?
                                                   000000045 ? 000000000 ?
                                                   C00000000000040F ?
skgxpgetimd()+51808  call     skgxpdmpmem()+48656  C0000017212BC1B9 ?
                                                   9FFFFFFFFFFFCB18 ?
                                                   000000018 ? 000000045 ?
                                                   000000000 ?
                                                   C000000000002858 ?
                                                   4000000006BBD6B0 ?
                                                   00004F29B ?
skgxppost()+27808    call     skgxpgetimd()+51104  6000000000043FA0 ?
                                                   9FFFFFFFFFFFCB10 ?
                                                   600000000013F700 ?
                                                   9FFFFFFFFFFFD2E0 ?
                                                   4000000004B9EC20 ?
                                                   000047B93 ? 000000000 ?
                                                   C000000000000DA3 ?
skgxpvsnd()+11696    call     skgxppost()+23936    9FFFFFFFFFFFD340 ?
                                                   600000000013F700 ?
                                                   9FFFFFFFFFFFDEA0 ?
                                                   4000000003A427E0 ?
                                                   0000448D1 ?
                                                   C000000000000C1F ?
                                                   6000000000043FA0 ?
                                                   C0000013144A5FA8 ?
skgxpwait()+512      call     skgxpvsnd()+7104     9FFFFFFFFFFFECB0 ?
                                                   000000004 ?
                                                   9FFFFFFFFFFFF300 ?
                                                   9FFFFFFFFFFFDEB0 ?
                                                   600000000013F700 ?
                                                   C000000000000EA3 ?
                                                   40000000039C56E0 ?
                                                   000049905 ?
ksxpwait()+2928      call     skgxpwait()          000000032 ? 000000004 ?
                                                   9FFFFFFFFFFFF300 ?
                                                   9FFFFFFFFFFFECC0 ?
                                                   600000000013F700 ?
                                                   9FFFFFFFFFFFF2F0 ?
                                                   C00000000000060F ?
                                                   40000000039C49B0 ?
$cold_ksliwat()+203  call     ksxpwait()           00000001E ?
2                                                  C000000000002C60 ?
                                                   9FFFFFFFFFFFB550 ?
                                                   600000000013F700 ?
                                                   4000000005953EC0 ?
                                                   00026E119 ? 000000000 ?
                                                   000000000 ?
kslwaitctx()+240     call     $cold_ksliwat()      C00000123065F668 ?
                                                   C00000123065F668 ?
                                                   000000003 ?
                                                   600000000013F700 ?
kslwait()+192        call     kslwaitctx()         9FFFFFFFFFFFB710 ?
                                                   000000003 ?
ksxprcvimd()+1120    call     kslwait()            000000003 ?
                                                   9FFFFFFFFFFFB710 ?
                                                   000000000 ? 000000018 ?
                                                   000000000 ? 000000000 ?
                                                   C000000000001838 ?
                                                   40000000051CA680 ?
kjctr_rksxp()+448    call     ksxprcvimd()         9FFFFFFFFFFFC640 ?
                                                   6000000000043FA0 ?
                                                   9FFFFFFFFFFFC6D0 ?
                                                   000000000 ?
                                                   4000000006B00540 ?
                                                   000000045 ? 000000000 ?
                                                   000000018 ?
kjctrcv()+448        call     kjctr_rksxp()        9FFFFFFFFD54CB68 ?
                                                   C0000016FFF7E958 ?
                                                   60000000001B9F30 ?
                                                   9FFFFFFFFFFFCAE0 ?
                                                   000000000 ?
                                                   9FFFFFFFFFFFCAE4 ?
                                                   000000045 ? 000000000 ?
kjcsrmg()+144        call     kjctrcv()            9FFFFFFFFD54CB68 ?
                                                   C0000016FFF7E958 ?
                                                   9FFFFFFFFFFFCAE4 ?
                                                   9FFFFFFFFFFFCB18 ?
                                                   C0000017212BC29C ?
                                                   000000045 ? 000000000 ?
kjmsm()+18384        call     kjcsrmg()            C0000017212BC1B9 ?
                                                   9FFFFFFFFFFFCB18 ?
                                                   000000018 ? 000000045 ?
                                                   000000000 ?
                                                   C000000000002858 ?
                                                   4000000006BBD6B0 ?
                                                   00004F29B ?
ksbrdp()+2768        call     kjmsm()              6000000000043FA0 ?
                                                   9FFFFFFFFFFFCB10 ?
                                                   600000000013F700 ?
                                                   9FFFFFFFFFFFD2E0 ?
                                                   4000000004B9EC20 ?
                                                   000047B93 ? 000000000 ?
                                                   C000000000000DA3 ?
opirip()+1248        call     ksbrdp()             9FFFFFFFFFFFD340 ?
                                                   600000000013F700 ?
                                                   9FFFFFFFFFFFDEA0 ?
                                                   4000000003A427E0 ?
                                                   0000448D1 ?
                                                   C000000000000C1F ?
                                                   6000000000043FA0 ?
opidrv()+1152        call     opirip()             9FFFFFFFFFFFECB0 ?
                                                   000000004 ?
                                                   9FFFFFFFFFFFF300 ?
                                                   9FFFFFFFFFFFDEB0 ?
                                                   600000000013F700 ?
                                                   C000000000000EA3 ?
sou2o()+240          call     opidrv()             000000032 ? 000000004 ?
                                                   9FFFFFFFFFFFF300 ?
opimai_real()+304    call     sou2o()              9FFFFFFFFFFFF320 ?
                                                   000000032 ? 000000004 ?
                                                   9FFFFFFFFFFFF300 ?
main()+224           call     opimai_real()        000000003 ? 000000000 ?
main_opd_entry()+80  call     main()               000000003 ?
                                                   9FFFFFFFFFFFF820 ?
                                                   600000000013F700 ?
                                                   C000000000000004 ?

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
42#
 楼主| 发表于 2013-2-21 10:05 | 只看该作者
本帖最后由 guoyJoe 于 2013-2-21 10:12 编辑
itpremier 发表于 2013-2-20 18:19
研究这东西有啥用啊?  我公司的DB性能有问题,你靠这个能解决吗?

实际上研究这个东西还是有用的,有助于我们更深入的理解内部的原因,现在DSI和官方文档也看多了,很多知识点还是不明白,特别是有些等待事件没有很详细的说明,要想模拟出这些等待,只能用这个一步步跟踪测试出来,其实很人理解等待事件以为肯定是产生了争用才会产生等待,用你这个跟踪测试完就会发现其实还有一种等待是oracle自发的(IO)。。。

使用道具 举报

回复
论坛徽章:
23
2013年新春福章
日期:2013-02-25 14:51:242013年新春福章
日期:2013-03-03 16:41:142013年新春福章
日期:2013-03-03 16:42:172013年新春福章
日期:2013-02-25 11:02:122013年新春福章
日期:2013-03-03 16:41:142013年新春福章
日期:2013-03-03 16:42:172014年世界杯参赛球队: 法国
日期:2014-06-13 11:24:502014年世界杯参赛球队: 波黑
日期:2014-06-13 15:38:252014年世界杯参赛球队: 伊朗
日期:2014-07-28 20:08:212014年世界杯参赛球队: 俄罗斯
日期:2014-07-17 17:21:42
43#
发表于 2013-2-21 10:07 | 只看该作者

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
44#
发表于 2013-2-21 11:24 | 只看该作者
很久没顶贴了,好文一篇,为老吕和老郭鼓掌。

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
45#
 楼主| 发表于 2013-2-22 11:01 | 只看该作者
何大 发表于 2013-2-21 11:24
很久没顶贴了,好文一篇,为老吕和老郭鼓掌。

何大师最近忙啥?

使用道具 举报

回复
论坛徽章:
5
2012新春纪念徽章
日期:2012-01-04 11:57:56ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:002013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-05-14 10:07:52迷宫蛋
日期:2013-07-01 15:56:27
46#
发表于 2013-2-22 16:14 | 只看该作者
guoyJoe 发表于 2013-2-18 12:18
呵呵。。。大师一句话就道破了我想说的。
Dtrace确实很强大,要研究的东西很多。以后多跟你学学。。。:r ...

话说oracle linux 的dtrace被闭源了,redhat下面什么时候能够有dtrace呢?systemtap还是没法和dtrace比啊!

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
47#
 楼主| 发表于 2013-2-22 17:57 | 只看该作者
qdddd123 发表于 2013-2-22 16:14
话说oracle linux 的dtrace被闭源了,redhat下面什么时候能够有dtrace呢?systemtap还是没法和dtrace比啊 ...

Oracle已把Solaris中的Dtrace移植到Oracle Enterprise Linux中了,作为与Red Hat争竞的一个强大的功能。

使用道具 举报

回复
招聘 : .Net研发
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:13
48#
发表于 2013-3-10 21:51 | 只看该作者
vage 发表于 2013-2-20 20:49
能。
除性能问题,更多的用于健康检查,可以从一份AWR报告中看出更多的信息。
还有排故。

v哥 咋看出是物理IO导致

使用道具 举报

回复
论坛徽章:
1
本田
日期:2013-09-13 11:40:13
49#
发表于 2013-3-10 23:39 | 只看该作者
收藏了,等以后好好学学,现在还没研究向您这么深入

使用道具 举报

回复
论坛徽章:
1
本田
日期:2013-09-13 11:40:13
50#
发表于 2013-3-10 23:39 | 只看该作者
收藏了,等以后好好学学,现在还没研究向您这么深入

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表