Oracle 鎖工作原理

2021-08-27 02:14:43 字數 3327 閱讀 2876

三種現象:

sql92標準的隔離級別

現象髒讀取

不可重複讀取

不存在讀取

隔離級別

未提交讀取(read uncommitted)

允許允許

允許已提交讀取(read committed)

不允許允許

允許可重複讀取(repeatable read)

不允許不允許

允許序列化(rerializable)

不允許不允許

不允許

oracle支援事務隔離級別

已提交讀取:

序列化:序列化隔離的事務只能看到事務執行前就已經提交資料,以及事務內insert、update、及delete語句對資料的修改。序列化隔離的事務不會出現不可重複讀取或不存在的讀取的現象

唯讀模式:唯讀事務只能看到事務執行前就已經提交的資料,且事務中不能執行insert、update及delete語句

set transaction isolation level read commited

set transaction isolation level serializable

set transaction read only

髒資料就是讀到database buffer cache做了修改但還沒有寫到datafile裡面的資料,只要沒有寫入資料檔案,不管是否提交,都可以稱為髒資料。

鎖:是防止訪問相同資源的事務產生破壞**互的機制

鎖模式:

排他鎖:能夠阻止共享被加鎖的資源。對資料進行修改時必須獲得此種模式的鎖。第乙個排他地對資源加鎖的事務是唯一可以對此資源進行修改的事務,直至排他鎖被釋放

共享鎖:依據操作型別有條件地允許共享被加鎖的資源。對資料進行讀取的多個使用者可共享此資料,這些使用者可以對資源加以共享鎖,防止其他使用者併發地修改此資源。多個事務可以對相同的資源加共享鎖鎖描述

dml 鎖(資料鎖)

dml 的作用是保護資料。例如,表級鎖(table lock)對整個表加鎖,行級鎖(row lock)則對選定的資料行加鎖。

ddl 鎖(資料字典鎖)

ddl 鎖的作用是保護方案物件的結構。例如,表及檢視的定義。

內部鎖(internal lock)及閂鎖(latch)

內部鎖及閂鎖用於保護資料庫的內部結構,例如,資料檔案。內部鎖及閂鎖的管理完全由 oracle 自動完成。

行共享表級鎖(row share table lock rs):表明擁有此鎖的事務已鎖定了表內的某些資料行,並有意對資料進行更新操作

select....from table ....for update of ......

lock table table in row share mode

允許操作:某個事務擁有了某個表的行共享表級鎖後,其他事務依然可以併發地對相同資料表執行查詢,插入,更新,刪除操作,或對錶內資料行加鎖的操作。也就是說,其他事務同時也能獲得相同表上的行共享鎖,行排他共享,及共享行排他模式的表級鎖。

禁止操作:某個事務擁有了某個表的行共享表級鎖後,只會禁止其他事務通過以下語句排他對相同表進行寫操作。lock table table in exclusive mode;

行排他表級鎖(row exclusive table lock rx):通常表面擁有此鎖 的事務已經對錶內的某些資料進行了更新操作。

insert into table.....

update table.....

delete from table.....

lock table table in row exclusive mode;

允許操作:某個事務擁有了某個表的行排他表級鎖後,其他事務依然可以併發地對相同資料表執行查詢,插入,更新,刪除操作,或對錶內資料行加鎖操作。即行排他表級鎖允許其他多個事務同時獲得相同表上的行共享表級鎖或行排他表級鎖

禁止操作:某個事務擁有了某個表的行排他表級鎖後,將禁止其他事務手工地對錶加鎖進行排他地讀寫操作,因此其他語句不能對相同表加鎖

lock table table in share mode;

lock table table in shae exclusive mode

lock table table in exclusive mode;

共享鎖(share table lock s):lock tabe table in shae mode

允許操作:某個事務擁有了某個表的共享表級鎖後,其他事務可以查詢表,可以使用select ......for update 語句鎖定選中的資料行,也能夠成功執行lock table .......in share mode 語句。但其他事務不能對錶進行更新操作。多個事務可以併發地獲得同乙個表上的共享表級鎖,在此種情況下任何事務都不能對錶進行更新。因此,擁有共享表級鎖的事務只能在此表上沒有其他事務的共享表級鎖時,才能對錶進行更新操作

禁止操作:某個事務擁有了某個表的共享級鎖後,將禁止其他事務修改此表,同時禁止其他事務執行以下語句

lock table table in row exclusive mode

lock table table in share row exclusive mode;

lock table table in exclusive mode;

共享行排他表級鎖(share row exclusive table lock srx):lock table table in share row exclusive mode;

允許操作:同一時間只有乙個事務 能夠獲得表的共享行排他表級鎖,某個事務擁有了某個表的共享行排他表級鎖後,其他事務可以查詢表,可以使用select ....for update 語句鎖定選中的資料行,當不能對錶進行更新操作

禁止操作:擁有共享行排他表級鎖的事務將阻止其他事務獲取行排他表級鎖來修改資料,共享行排他表級鎖還能阻止其他事務在相同表上獲取共享表鎖,共享行排他表級鎖及排他表級鎖

lock table table in row exclusive mode;

lock table table in share mode;

lock table table in share row exclusive mode;

lock table table in exclusive mode;

排他表級鎖(exclusive table lock x):lock table table in exclusive mode;

允許操作:同一時間只有乙個事務能獲得表上的排他表級鎖。乙個事務獲得表級鎖後,其他事務只能對錶進行查詢操作

禁止操作:乙個事務獲得排他表級鎖後,將禁止其他事務對錶執行任何dml操作,其他事務無法獲取表上任何型別的鎖

指紋鎖方案板工作原理

指紋鎖的觸控螢幕提取來訪者的指紋後,把指紋資訊反饋會指紋鎖的伺服器端,伺服器調動各種演算法來對指紋進行分析,並且把它與系統中儲存的使用者的指紋進行比對,然後把對比結果進行量化,如果相似度高於一定的量值,就會認為兩個指紋是相同的,則返回乙個同意開門的指令,否則就拒絕開門。一 指紋介紹 1 人的 由表皮...

Oracle 10G select工作原理

資料庫查詢語句內部執行過程 select from table 步驟 分析階段 parse 1 共享池庫快取記憶體有沒有該語句。如果有直接返回結果。2 語法分析sql語句是否正確進行下一步分析。3 檢查表是否存在。物件解析,查詢資料字典表 4 翻譯 成為所有字段。檢查字段是否正確。5 獲得物件解析鎖...

或非門sr鎖存器 sr鎖存器的工作原理

rs鎖存器是一兩輸入 兩輸出的電路,其電路如下圖a,其有兩個互相交叉反饋相連的兩個與非門構成,其兩個輸出為兩個相反的輸出 或稱為互補輸出 圖b給出了其邏輯符號。圖中 rd,sd為rs鎖存器的兩個輸入端,q和 q為兩個互補的輸出,從圖上不難看出,當 rd sd為高 電平時輸出狀態不發生變化,而僅當其乙...