|
謝謝 Yong huang
我明白您的意思﹐以升序的規律 來申請 latch﹐以免有回溯現象﹐而出現死鎖...
我只是個人覺得擴大了 latch deaklock 的范圍﹐有點類似于 "悲觀鎖" 。
如以下情況﹐
session 1
heloing latch ﹕enqueue hash chains latch ﹐ level 4
request latch ﹕redo allocation latch ﹐ level 6
session 2﹕
helding ﹕parallel query alloc buffer latch , level 6
request ﹕process queue reference latch ﹐ level 4 (當然這是oracle 不允許)
當然﹐這里我不清楚這里的 latch 請求是否合理﹐我僅是來例示一下。
在 session 2 ﹐在持有 level 6 的 parallel query alloc buffer latch ﹐所以不允許請求 level 4 的process queue reference latch 。
這樣以免 和 前面的 session 1 形成相互等待的 deadlock 。 只是我在覺得 ﹐如上面的示例﹐
即便是 session 持有 level 4﹐申請 level 6 ﹐而 session level 6﹐申請 level 4。這也不會有deadlock 發策
因為它們持有和申請的 latch 根本就毫不相干﹐同一 level 的 latch 應有多數﹐我想這樣的情況應也不在少數。
當然﹐ oracle 這樣控制應有原因﹐如您 所說﹐不能看到 更多的資料﹐呵.....
所以﹐以您對 latch 內部特性和 它操縱的對象來講如何解讀.... |
|