|
本帖最后由 Yured 于 2013-7-10 16:04 编辑
vage 发表于 2013-4-6 11:28 ![]()
这么简单的函数,相信应该是用C语言的内嵌汇编写的。现在,进程正停在sskgslcas的入口处,福尔摩斯看了一下 ...
再也不敢在简历上写熟悉Oracle了,感谢vage大师,补下汇编知识再来拜读,先记下结论:
这真是一个奇怪的结果,逻辑读函数中的Latch竞争,原凶竟然是物理读。
调优的方向,应该是针对物理读最多的一些SQL,这样才有助于减少kcbgtcr: kslbegin excl处的Latch争用。
而这调优逻辑读高的SQL,对于减少kcbgtcr: kslbegin excl处的Latch争用,是没有帮助的。
进一步的,可以将kcbgtcr中的Latch Miss分个类:
一、纯逻辑读相关的
1、kcbgtcr+0x521: movq 0xaf5f9e0(%rip),%r8 ---662 kcbgtcr: fast path
2、kcbgtcr+0x27ba: movq 0xa718147 (%rip),%r8 ---- kcbgtcr: fast path (cr pin)
二、物理读相关的:
3、kcbgtcr+0x5ba9: movq 0xaf5a360(%rip),%r8 ---- 0x663 kcbgtcr: kslbegin excl
4、kcbgtcr+0x61eb: movq 0xaf59eae(%rip),%r8 --- 695 kcbgtcr_2
5、kcbgtcr+0x6444: movq 0xaf599bd(%rip),%r8 --- 642 kcbgtcr: kslbegin shared
6、kcbgtcr+0x976d: movq 0xaf56a0c(%rip),%r8 ---6b1 kcbgtcr: L2
|
|