oracle latch_自譯文_(3)
越看越感覺,寫得不錯,精彩
請擴充套件閱讀如下章節:
oracle latch自譯文(一)
http://space.itpub.net/9240380/viewspace-631161
oracle latch自譯文(二)
http://space.itpub.net/?uid-9240380-action-viewspace-itemid-631300
我們繼續譯文:
enqueue簡介
我們來假設一處情景,僅有一個使用者的資料庫引擎
我們不需要任何locks,哪怕就至少用於併發目的的
然後我們想讓我們的資料庫過渡到支援更多使用者
實行併發的最簡單方法是什麼呢?
一個簡單(簡約)的大鎖(lock) ,它可以防止或保護對於任何共享資源的訪問
但這一個鎖可以讓系統過渡到最好情況嗎,支援更多使用者嗎
把lock鎖分成多個pieces是非常有意義的:--注:pieces我譯為片
1)每個片用於保護不同型別的資源,比如:
一個TM表鎖
這種TM表鎖用於保護被事務修改的行
一個MR鎖保護對於資料檔案狀態及佈局的更改
2)更進一步對於單一物件的分類也是必需的,避免不必要的競爭
這種所謂的enqueue(後我譯為:入隊)資源識別符號也可以納入到(屬於)資源
一個hash表的slots來確認或標識一些資源
資源不是鎖,它們只是透過鎖得到的物件的佔位符
唯一識別符號(pk)與一個資源對應關係包括如下:
資源型別(tx,tm,mr,etc)
資源識別符號1(id1)
補註:這些資源識別符號用於劃分(表示)不同的資源型別與對應獨立的物件,比如:兩個表都佔用在記憶體中給他們分配的tm鎖資源,那麼id1指明table的物件id(v$lock_type具體表示對於每種資源型別id1/2的含義是什麼)
資源識別符號2(id2)
locks:
鎖表示鎖佔用者與被鎖定的資源之間一種關係
如果在單一資源(以相容模式)出現很多鎖佔用者,這時對於每個物件仍舊只是一個資源,但多個鎖結構指向這個資源
為何鎖叫作入隊?
這是因為,對於鎖等待者,採用鎖定架構實現一種排序的排隊機制(不好譯)
latches 和mutexes嚴格意義上講,沒用採用一種精密的排隊機制
入隊資源
v$resource(x$ksqrs)
入隊鎖
v$lock(x$ksqe)
入隊資源型別
v$lock_type-- 記錄著id1和id2的含義
@lt tx
診斷排錯是一種簡單合適的工具
v$session_wait
v$lock
Enqueue tracing events:--入隊追蹤事件
10704, 00000, "Print out information about what enqueues are being obtained" --10704,00000,列印顯示得取入隊的相關資訊
// *Cause: When enabled, prints out arguments to calls to ksqcmi and
// ksqlrl and the return values.
// *Action: Level indicates details:
// Level: 1-4: print out basic info for ksqlrl, ksqcmi
// 5-9: also print out stuff in callbacks: ksqlac, ksqlop
// 10+: also print out time for each line
10706, 00000, "Print out information about global enqueue manipulation"---10706,00000,列印全域性入隊操作的相關資訊
// *Cause: When enabled, prints out activity in ksi routines.
// *Action: INternal system parameter (_ksi_trace) can be used in addition
// to setting this event to limit output information on selected
// set of global enqueue server enqueue type(s)
// For example:
// _ksi_trace = RTXA
// output information only for RT and XA lock types.
//
// *Action: Level indicates details:
// 0-4: show args for each main call
// 5-9: also indicate callbacks
// 10+: also printout time for each line
DEADLOCK DETECTED
[Transaction Deadlock]
Current SQL statement for this session:
update t set object_id = 2 where wner = 'SH'
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-00070003-00000a4a 19 150 X 16 147 X
TX-0005002e-00000d63 16 147 X 19 150 X
session 150: DID 0001-0013-00000032 session 147: DID 0001-0010-00000452
session 147: DID 0001-0010-00000452 session 150: DID 0001-0013-00000032
Rows waited on:
Session 147: obj - rowid = 0001593C - AAAVk8AABAAARJFAAC
(dictionary objn - 88380, file - 1, block - 70213, slot - 2)
Session 150: obj - rowid = 0001593C - AAAVk8AABAAASG8AAj
(dictionary objn - 88380, file - 1, block - 74172, slot - 35)
Information on the OTHER waiting sessions:
Session 147:
pid=16 serial=625 audsid=-1 user: 0/SYS
O/S info: user: PORGAND\Tanel, term: PORGAND, ospid: 5900:2388, machine: MSHOME\P
program: sqlplus.exe
application name: sqlplus.exe, hash value=0
Current SQL Statement:
update t set object_id = 3 where object_type = 'TABLE'
End of information on OTHER waiting sessions
Slides, scripts and my blog: ---牛人blog,多看啊,我認為這篇文章講得深入淺出
http://blog.tanelpoder.com
...I will post this session's sqlplus output there after the conference
請擴充套件閱讀如下章節:
oracle latch自譯文(一)
http://space.itpub.net/9240380/viewspace-631161
oracle latch自譯文(二)
http://space.itpub.net/?uid-9240380-action-viewspace-itemid-631300
我們繼續譯文:
enqueue簡介
我們來假設一處情景,僅有一個使用者的資料庫引擎
我們不需要任何locks,哪怕就至少用於併發目的的
然後我們想讓我們的資料庫過渡到支援更多使用者
實行併發的最簡單方法是什麼呢?
一個簡單(簡約)的大鎖(lock) ,它可以防止或保護對於任何共享資源的訪問
但這一個鎖可以讓系統過渡到最好情況嗎,支援更多使用者嗎
把lock鎖分成多個pieces是非常有意義的:--注:pieces我譯為片
1)每個片用於保護不同型別的資源,比如:
一個TM表鎖
這種TM表鎖用於保護被事務修改的行
一個MR鎖保護對於資料檔案狀態及佈局的更改
2)更進一步對於單一物件的分類也是必需的,避免不必要的競爭
這種所謂的enqueue(後我譯為:入隊)資源識別符號也可以納入到(屬於)資源
一個hash表的slots來確認或標識一些資源
資源不是鎖,它們只是透過鎖得到的物件的佔位符
唯一識別符號(pk)與一個資源對應關係包括如下:
資源型別(tx,tm,mr,etc)
資源識別符號1(id1)
補註:這些資源識別符號用於劃分(表示)不同的資源型別與對應獨立的物件,比如:兩個表都佔用在記憶體中給他們分配的tm鎖資源,那麼id1指明table的物件id(v$lock_type具體表示對於每種資源型別id1/2的含義是什麼)
資源識別符號2(id2)
locks:
鎖表示鎖佔用者與被鎖定的資源之間一種關係
如果在單一資源(以相容模式)出現很多鎖佔用者,這時對於每個物件仍舊只是一個資源,但多個鎖結構指向這個資源
為何鎖叫作入隊?
這是因為,對於鎖等待者,採用鎖定架構實現一種排序的排隊機制(不好譯)
latches 和mutexes嚴格意義上講,沒用採用一種精密的排隊機制
入隊資源
v$resource(x$ksqrs)
入隊鎖
v$lock(x$ksqe)
入隊資源型別
v$lock_type-- 記錄著id1和id2的含義
@lt tx
診斷排錯是一種簡單合適的工具
v$session_wait
v$lock
Enqueue tracing events:--入隊追蹤事件
10704, 00000, "Print out information about what enqueues are being obtained" --10704,00000,列印顯示得取入隊的相關資訊
// *Cause: When enabled, prints out arguments to calls to ksqcmi and
// ksqlrl and the return values.
// *Action: Level indicates details:
// Level: 1-4: print out basic info for ksqlrl, ksqcmi
// 5-9: also print out stuff in callbacks: ksqlac, ksqlop
// 10+: also print out time for each line
10706, 00000, "Print out information about global enqueue manipulation"---10706,00000,列印全域性入隊操作的相關資訊
// *Cause: When enabled, prints out activity in ksi routines.
// *Action: INternal system parameter (_ksi_trace) can be used in addition
// to setting this event to limit output information on selected
// set of global enqueue server enqueue type(s)
// For example:
// _ksi_trace = RTXA
// output information only for RT and XA lock types.
//
// *Action: Level indicates details:
// 0-4: show args for each main call
// 5-9: also indicate callbacks
// 10+: also printout time for each line
DEADLOCK DETECTED
[Transaction Deadlock]
Current SQL statement for this session:
update t set object_id = 2 where wner = 'SH'
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-00070003-00000a4a 19 150 X 16 147 X
TX-0005002e-00000d63 16 147 X 19 150 X
session 150: DID 0001-0013-00000032 session 147: DID 0001-0010-00000452
session 147: DID 0001-0010-00000452 session 150: DID 0001-0013-00000032
Rows waited on:
Session 147: obj - rowid = 0001593C - AAAVk8AABAAARJFAAC
(dictionary objn - 88380, file - 1, block - 70213, slot - 2)
Session 150: obj - rowid = 0001593C - AAAVk8AABAAASG8AAj
(dictionary objn - 88380, file - 1, block - 74172, slot - 35)
Information on the OTHER waiting sessions:
Session 147:
pid=16 serial=625 audsid=-1 user: 0/SYS
O/S info: user: PORGAND\Tanel, term: PORGAND, ospid: 5900:2388, machine: MSHOME\P
program: sqlplus.exe
application name: sqlplus.exe, hash value=0
Current SQL Statement:
update t set object_id = 3 where object_type = 'TABLE'
End of information on OTHER waiting sessions
Slides, scripts and my blog: ---牛人blog,多看啊,我認為這篇文章講得深入淺出
http://blog.tanelpoder.com
...I will post this session's sqlplus output there after the conference
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-631301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle latch_自譯文_(1)Oracle
- oracle latch_自譯文_(2)Oracle
- A3C論文翻譯
- oracle 失效物件自動重新編譯Oracle物件編譯
- 【A GUIDE TO CRC ERROR DETECTION ALGORITHM】 (譯文3-Todo)GUIIDEErrorGo
- Sublime Text3 自動編譯less 的配置編譯
- rfc1945-http1.0自譯本-(3) (轉)HTTP
- RFC2617- HTTP Authentication自譯本-(3) (轉)HTTP
- 自媒體爆文速成祕籍,3招寫出10W+爆文
- 譯文:WebKit for DevelopersWebKitDeveloper
- 飆高音(譯文)
- 【公益譯文】安全控制評估自動化支援:軟體漏洞管理
- objc系列譯文(6.2):編譯器OBJ編譯
- C標準庫參考指南系列譯文(3)errno.h
- TransH論文翻譯
- Ambari 架構(譯文)架構
- NDT論文翻譯
- 【公益譯文】安全控制評估自動化支援:軟體漏洞管理(二)
- 【公益譯文】安全控制評估自動化支援:軟體漏洞管理(三)
- 深度學習論文翻譯解析(十九):Searching for MobileNetV3深度學習
- ORACLE自動重編譯包導致查詢被卡Oracle編譯
- [翻譯自官方]什麼是RDB和AOF? 一文了解Redis持久化!Redis持久化
- 《Scalable IO in Java》譯文Java
- 《太上感應篇》譯文
- 譯文:影象優化(上)優化
- 【譯文】OAuth 2 介紹OAuth
- 理解 Node.js(譯文)Node.js
- 併發框架Disruptor譯文框架
- Sublime Text3中 less 自動編譯成 css 的方法編譯CSS
- 自媒體-軟文
- 全網唯一完整譯文|Waymo無人車報告:通往自動駕駛之路自動駕駛
- Understanding HBase and BigTable 譯文
- JavaScript中的Object相等(譯文)JavaScriptObject
- 【譯文】CSS 與網路效能CSS
- samesite-cookie詳解(譯文)Cookie
- [譯文] JavaScript async 和 awaitJavaScriptAI
- Java Volatile Keyword - 譯文Java
- JavaScript 閉包入門(譯文)JavaScript