首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle跟踪文件解释: enq: TX -索引争用

Oracle跟踪文件解释: enq: TX -索引争用
EN

Database Administration用户
提问于 2012-02-16 12:50:57
回答 1查看 8.2K关注 0票数 3

背景

我有一个应用程序,它在Oracle表中执行大量并发插入。Top视图报告了大量的索引争用,我试图减少这种争用以提高性能。

该表有几个索引,但我怀疑问题是PK上的叶块争用,这是一个单调递增的序列。我知道反向关键索引,但我希望能够在深入猜测修正之前指出问题所在。

跟踪文件内容

在加载时,我从数据库中提取了一个跟踪信息。我已经把它的一部分放在了底部,但有一部分特别令我费解。最大的"enq: TX -索引争用“条目占总时间的94%:

代码语言:javascript
复制
WAIT #47156432773600: nam='enq: TX - index contention' ela= 113183 name|mode=1415053316 usn<<16 | slot=4259845 sequence=43226 obj#=-1 tim=1329387810694927

我不知道怎么解释这句话。谷歌得出的结论是,name|mode=1415053316意味着在共享模式下进行交易(十六进制TX04),而obj#将在SYS.OBJ$中引用对象。

对于指定obj#的其他等待(参见下面),它指向我怀疑的PK索引,但在最大的等待中,指向obj#=-1

所以,我的问题是:

  • 在这个等待中,obj#是-1意味着什么?
  • usn<<16 | slot=4259845参数是什么意思?对我有用吗?
  • sequence=43226告诉我什么有用的东西吗?

更多的跟踪细节

代码语言:javascript
复制
PARSING IN CURSOR #47156432773600 len=654 dep=0 uid=41 oct=2 lid=41 tim=1329387810581386 hv=3365236844 ad='2977ccca8' sqlid='31r3hm349aw3c'
insert into AnonymousTable (a, b, c ...) values (:1, :2, :3 ...)
END OF STMT
PARSE #47156432773600:c=0,e=51,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=0,tim=1329387810581384
WAIT #47156432773600: nam='enq: TX - index contention' ela= 113183 name|mode=1415053316 usn<<16 | slot=4259845 sequence=43226 obj#=-1 tim=1329387810694927
WAIT #47156432773600: nam='latch: ges resource hash list' ela= 3958 address=11249153232 number=91 tries=0 obj#=-1 tim=1329387810698944
WAIT #47156432773600: nam='enq: TX - index contention' ela= 1891 name|mode=1415053316 usn<<16 | slot=655387 sequence=48341 obj#=-1 tim=1329387810700949
WAIT #47156432773600: nam='buffer busy waits' ela= 162 file#=32 block#=618823 class#=1 obj#=28134 tim=1329387810701223
WAIT #47156432773600: nam='buffer busy waits' ela= 1572 file#=32 block#=618823 class#=1 obj#=28134 tim=1329387810702840
WAIT #47156432773600: nam='enq: TX - index contention' ela= 1809 name|mode=1415053316 usn<<16 | slot=5767194 sequence=85968 obj#=28134 tim=1329387810704709
WAIT #47156432773600: nam='buffer busy waits' ela= 2254 file#=32 block#=618823 class#=1 obj#=28134 tim=1329387810707018
WAIT #47156432773600: nam='enq: TX - index contention' ela= 15306 name|mode=1415053316 usn<<16 | slot=4784132 sequence=53965 obj#=28134 tim=1329387810722436
EXEC #47156432773600:c=1999,e=142776,p=0,cr=50,cu=364,mis=0,r=28,dep=0,og=1,plh=0,tim=1329387810724203
STAT #47156432773600 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL  (cr=50 pr=0 pw=0 time=142726 us)'
WAIT #47156432773600: nam='SQL*Net message to client' ela= 2 driver id=1413697536 #bytes=1 p3=0 obj#=28134 tim=1329387810724288
WAIT #47156432773600: nam='SQL*Net message from client' ela= 363 driver id=1413697536 #bytes=1 p3=0 obj#=28134 tim=1329387810724667
CLOSE #47156432773600:c=0,e=7,dep=0,type=1,tim=1329387810724701
EN

回答 1

Database Administration用户

发布于 2014-03-19 17:59:47

OBJ#=-1表示事件不能与任何特定对象关联。

这些值几乎可以肯定是从等待事件中转储的P1、P2和P3值。如果您想知道这些值意味着什么,您应该查询v$event_name,尽管这几乎肯定会使您陷入更深层次的困境,即甲骨文性能。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/13263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档