對TM鎖和TX鎖的簡單理解
此文章為轉載,參考一下大家的看法
DML鎖包括table-level locks(TM)和Row-level locks(TX)
A table-level lock (TM type) is set for any DML transaction that modifies a table: INSERT, UPDATE, DELETE, SELECT...FOR UPDATE, or LOCK TABLE. The table lock prevents DDL operations that would conflict with the transaction.
--說明table lock(TM type)是防止和事務衝突的DDL操作,比如在insert時防止表被drop。
The row-level lock (TX type) is automatically acquired for each row modified by INSERT, UPDATE, DELETE, or SELECT...FOR UPDATE statements. The row-level lock ensures that no other user can modify the same row at the same time. Therefore, there is no risk that a user can modify a row that is being modified and not yet committed by another user.
--說明row-level lock(TX type)是為了確保其它使用者不可以在相同的時間修改相同的行。
TM 是物件鎖,表示可能在這個物件上做了什麼操作,還沒有結束,所以不允許ddl。update 0 條記錄,因為鎖定發生在真實修改發生之前,不知道會修改多少記錄,所以tm先產生了,結果卻沒有更新到任何記錄,也就沒使用回滾段,於是沒有tx產生
TX 是事務鎖,表示發起了一個事務,發起事務的判別標準,是根據 是否使用回滾段中作為評判標準的。
也就是說,TM表示你鎖定了系統中的一個物件,對於資料庫系統表來說 可以看作鎖定了 一個object的記錄別人不能對這個object的記錄進行 刪除和修改。而tx呢,是以回滾段的使用作為標準的,通常情況下,使用了回滾段就涉及到了記錄行,我們習慣上認為是記錄發生了變化(插入、修改、刪除)。如下,我們發起一個事務,沒有修改任何記錄,但是已經使用了回滾段,在回滾段事物表中就能找著記錄了。
TX 是事務鎖,表示發起了一個事務,發起事務的判別標準,是根據 是否使用回滾段中作為評判標準的。
也就是說,TM表示你鎖定了系統中的一個物件,對於資料庫系統表來說 可以看作鎖定了 一個object的記錄別人不能對這個object的記錄進行 刪除和修改。而tx呢,是以回滾段的使用作為標準的,通常情況下,使用了回滾段就涉及到了記錄行,我們習慣上認為是記錄發生了變化(插入、修改、刪除)。如下,我們發起一個事務,沒有修改任何記錄,但是已經使用了回滾段,在回滾段事物表中就能找著記錄了。
exec dbms_output.put_line( dbms_transaction.local_transaction_id(true) );
然後檢視V$LOCK發現產生了TX鎖。
select * from v$lock;
[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/786540/viewspace-1020585/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle的TM鎖、TX鎖Oracle
- oracle的TM鎖、TX鎖知識完全普及Oracle
- Oracle的TX鎖(行級鎖、事務鎖)Oracle
- ORACLE TX鎖Oracle
- TX鎖查詢
- Oracle TX鎖的處理Oracle
- 使用 python 實現簡單的共享鎖和排他鎖Python
- 對鎖的理解(轉載)
- 程式中,對鎖的理解
- 理解樂觀鎖和悲觀鎖
- TM表鎖各種mode的實驗及2-6 的TM鎖相互間的互斥示例
- 並行dml操作所需的TM鎖並行
- TX鎖(Transaction Lock)分析 (zt)
- 記一次 "排它鎖" 和 "自旋鎖" 的簡單實現
- 關於 TX 鎖的兩句sqlSQL
- APPEND時的TM鎖定級別APP
- 使用WinDbg對Windows Live Toolbar死鎖的簡單分析Windows
- 【Redis 分散式鎖】(1)一把簡單的“鎖”Redis分散式
- MySQL中的事務和鎖簡單測試MySql
- 簡單瞭解下Java中鎖的概念和原理Java
- Oracle鎖簡單介紹Oracle
- ORACLE 鎖簡單介紹Oracle
- 重入鎖的理解
- 淺談自旋鎖和 JVM 對鎖的最佳化JVM
- Redisson分散式鎖的簡單使用Redis分散式
- 互斥鎖mutex的簡單實現Mutex
- Sqlserver鎖升級的理解和例子SQLServer
- 【Java】深入理解ReentrantLock可重入鎖之簡單使用JavaReentrantLock
- 產生TX鎖等待不同情形的分析
- MySQL/InnoDB中,樂觀鎖、悲觀鎖、共享鎖、排它鎖、行鎖、表鎖、死鎖概念的理解MySql
- java 執行緒鎖物件鎖的理解Java執行緒物件
- Oracle 鎖簡單介紹(轉)Oracle
- Oracle鎖簡單介紹(轉)Oracle
- 日常運維之TX鎖處理(一)運維
- 日常運維之TX鎖處理(二)運維
- 對CSRF的簡單理解
- 鎖結構的理解
- 分享一個自動殺根鎖(抓住TX鎖不釋放的SESSION)的指令碼Session指令碼