排他鎖,也叫寫鎖:這種鎖防止資源的共享,用作資料的修改。假如有事務t給資料a加上該類鎖,那麼其他事務將不能對a加任何的鎖,所以此時只允許t對該資料進行讀取和修改,直到事務完成將該型別的鎖釋放為止。
共享鎖,也叫讀鎖:這種鎖下的資料只能被讀取,不能被修改。如果有事務t給資料a加上共享鎖後,那麼其他事務不能對其加排他鎖,只能加共享鎖。加了該鎖的資料可以被併發地讀取。
oracle的鎖按作用物件不同分為如下幾種型別:
dml鎖:該型別鎖被稱為資料鎖,用於保護資料。
ddl鎖:可以保護鎖模式中物件的結構。
內部閂鎖:保護資料庫的內部結構,完全自動呼叫。
其中,dml鎖主要保證了併發訪問時資料的完整性。它可再細分為兩種型別的鎖:
1)行級鎖(tx),也叫事務鎖。當修改表中某行記錄時,需要對將要修改的記錄加行級鎖,防止兩個事務同時修改相同記錄,事務結束,該鎖也會釋放,是粒度最細的鎖。屬於排他鎖。
2)表級鎖(tm),其主要作用是防止在修改資料時,表的結構發生變化。假設會話s在修改表a的資料時它會得到表a的tm鎖,而此時將不允許其他會話對該錶進行變更或刪除操作。
同時,表級鎖包含如下幾種模式:
row share,行級共享鎖(rs)。select ……from ……for update語句就是乙個例子。該模式下不允許其他的並行會話對同一張表使用排他鎖,但允許其利用dml語句或lock命令鎖定同一張表的其他記錄。
share,共享鎖(s)。該模式下,不允許會話更新表,但允許對錶新增rs鎖。
exclusive,排他鎖(x)。該模式下,其他的並行會話不能對錶進行dml和ddl操作,該錶只能讀。
share row exclusive,共享行級排他鎖(x)。該模式下,不能對同一張表進行dml操作,也不能新增s鎖。
row excelusive,行級排他鎖。該模式下允許並行會話對同一張表的其他資料進行修改,但不允許並行會話對同一張表使用排他鎖。
第 8 章 事務處理與鎖
目錄 8.1.for update skip locked 8.2.for share 當使用 for update 時,會鎖住所有where匹配條件的記錄,但有時我們只是修改其中的一條,例如where條件匹配後跟隨limit 1,這時for update會鎖住所有where匹配的記錄,我們使用 s...
第12章 繼承
1 單一繼承 2 多重繼承 3 繼承的賦值 1 將派生類的物件賦值給基類的物件 例如father p son s p s 會呼叫賦值運算子 將左邊物件的成員賦值給右邊物件的成員 不能將基類的物件賦值給派生類的物件,因為要呼叫賦值運算子 基類物件中沒有派生類物件自己的成員 2 基類的指標或者引用指向派...
第12章 模組 2
12.3 命名空間 命名空間是名稱 識別符號 到物件的對映。向命名空間新增名稱的操作過程涉及繫結識別符號到指定物件的操作 以及給該物件的引用計數加1 改變乙個名字的繫結叫做重新繫結,刪除乙個名字叫做解除繫結。執行期間有兩個或三個活動的命名空間。這三個命名空間分別是區域性命名空間,全域性命名空間和內建...