理解锁和闩(1)与锁相关的数据结构
上一篇 /
下一篇 2012-10-12 15:36:16
/ 个人分类:数据库
)GB$pHt5d-N!O-T+SU0 在oracle眼里,锁不是稀有资源,相反地,只要需要,你就应该长期地持有对数据所加的锁。行级锁根本没有相关开销,对1千万行锁定所需的资源数与对1行锁定所需的资源数完全相同,这是个常量。
2zU,`:X h:jyW051Testing软件测试网/pP4p#gw/Ju
s2e 在SGA中和锁相关的内存有两块:队列资源池和锁池。池:指的就是一块固定大小的内存。51Testing软件测试网s+]:`.CKd9X
51Testing软件测试网Q2Dv,j%P1\ C*a!J 队列资源池:存放所有的队列资源.锁就是队列资源。51Testing软件测试网+_UE$nrmH
5^J@$wx9c9M0 例如:一个表上的TM锁就是一个队列资源,有多少个表就有多少个TM队列资源,如果有一个表的TM锁被持有,他就会被放进队列资源池。为了对他们加以区分,要为各个表的TM队列资源起个名字,名字的格式'队列资源类型-id1-id2‘。
WAV?
aEpb051Testing软件测试网]rb3~/_(V? 例如:51Testing软件测试网S]Ivp.[!a7k$cg"wx
51Testing软件测试网MX$^#Yj6@#SPY)Rb*p
两个会话修改了同一个表的不同行,两个会话并不互相阻塞.表的ID是2000,这里我们以TM锁为例,队列资源池中会有一个空闲条目被占用,其名字
是<TM-2000-0>,其信息包括:队列资源名和持有者队列的链表头.但真正的两个持有者的相关信息,被存储在锁池中。