Oracle中的鎖
1.按使用者與系統劃分,可以分為自動鎖與顯示鎖
自動鎖:當進行一項資料庫操作時,預設情況下,系統自動為此資料庫操作獲得所有有必要的鎖。
顯示鎖:某些情況下,需要使用者顯示的鎖定資料庫操作要用到的資料,才能使資料庫操作執行得更好,顯示鎖是使用者為資料庫物件設定的。
2.按鎖級別劃分,可分為共享鎖與排它鎖
共享鎖:共享鎖使一個事務對特定資料庫資源進行共享訪問——另一事務也可對此資源進行訪問或獲得相同共享鎖。共享鎖為事務提供高併發性,但如拙劣的事務設計+共享鎖容易造成死鎖或資料更新丟失。
排它鎖:事務設定排它鎖後,該事務單獨獲得此資源,另一事務不能在此事務提交之前獲得相同物件的共享鎖或排它鎖。
[@more@] 3.按操作劃分,可分為DML鎖、DDL鎖+DML鎖又可以分為,行鎖、表鎖、死鎖
-行鎖:當事務執行資料庫插入、更新、刪除操作時,該事務自動獲得操作表中操作行的排它鎖。
-表級鎖:當事務獲得行鎖後,此事務也將自動獲得該行的表鎖(共享鎖),以防止其它事務進行DDL語句影響記錄行的更新。事務也可以在進行過程中獲得共享鎖或排它鎖,只有當事務顯示使用LOCK TABLE語句顯示的定義一個排它鎖時,事務才會獲得表上的排它鎖,也可使用LOCK TABLE顯示的定義一個表級的共享鎖(LOCK TABLE具體用法請參考相關文件)。
-死鎖:當兩個事務需要一組有衝突的鎖,而不能將事務繼續下去的話,就出現死鎖。
如事務1在表A行記錄#3中有一排它鎖,並等待事務2在表A中記錄#4中排它鎖的釋放,而事務2在表A記錄行#4中有一排它鎖,並等待事務; 1在表A中記錄#3中排它鎖的釋放,事務1與事務2彼此等待,因此就造成了死鎖。死鎖一般是因拙劣的事務設計而產生。死鎖只能使用SQL下:alter system kill session "sid,serial#";或者使用相關作業系統kill程式的命令,如UNIX下kill -9 sid,或者使用其它工具殺掉死鎖程式。
+DDL鎖又可以分為:排它DDL鎖、共享DDL鎖、分析鎖
-排它DDL鎖:建立、修改、刪除一個資料庫物件的DDL語句獲得操作物件的 排它鎖。如使用alter table語句時,為了維護資料的完成性、一致性、合法性,該事務獲得一排它DDL鎖。
-共享DDL鎖:需在資料庫物件之間建立相互依賴關係的DDL語句通常需共享獲得DDL鎖。
如建立一個包,該包中的過程與函式引用了不同的資料庫表,當編譯此包時,該事務就獲得了引用表的共享DDL鎖。
-分析鎖:ORACLE使用共享池儲存分析與最佳化過的SQL語句及PL/SQL程式,使執行相同語句的應用速度更快。一個在共享池中快取的物件獲得它所引用資料庫物件的分析鎖。分析鎖是一種獨特的DDL鎖型別,ORACLE使用它追蹤共享池物件及它所引用資料庫物件之間的依賴關係。當一個事務修改或刪除了共享池持有分析鎖的資料庫物件時,ORACLE使共享池中的物件作廢,下次在引用這條SQL/PLSQL語句時,ORACLE重新分析編譯此語句。
4.內部閂鎖
內部閂鎖:這是ORACLE中的一種特殊鎖,用於順序訪問內部系統結構。當事務需向緩衝區寫入資訊時,為了使用此塊記憶體區域,ORACLE首先必須取得這塊記憶體區域的閂鎖,才能向此塊記憶體寫入資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7416120/viewspace-1004781/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中的鎖型別Oracle型別
- oracle中的鎖機制Oracle
- 處理Oracle Session中的鎖OracleSession
- ORACLE中殺死鎖程式的方法Oracle
- Oracle中的死鎖Dead Lock(一)Oracle
- Oracle中的死鎖Dead Lock(二)Oracle
- ORACLE 資料庫中的鎖機制Oracle資料庫
- oracle 中查詢被鎖的物件,並殺死死鎖程式的方法Oracle物件
- oracle的TM鎖、TX鎖Oracle
- oracle的鎖Oracle
- 檢視ORACLE中鎖定物件Oracle物件
- Oracle的鎖表與解鎖Oracle
- Oracle的TX鎖(行級鎖、事務鎖)Oracle
- 從OS中kill ORACLE死鎖程式Oracle
- ORACLE 鎖的概念Oracle
- ORACLE鎖的管理Oracle
- 監控Oracle系統中鎖的常用指令碼Oracle指令碼
- 【鎖】Oracle鎖系列Oracle
- oracle 鎖表、解鎖的語句Oracle
- oracle檢視被鎖的表和解鎖Oracle
- oracle鎖Oracle
- oracle 互鎖的sqlOracleSQL
- oracle鎖阻塞的分析Oracle
- ORACLE鎖的總結Oracle
- ORACLE鎖的管理(zt)Oracle
- oracle鎖的管理(轉)Oracle
- Java 中的鎖Java
- java 中的鎖 -- 偏向鎖、輕量級鎖、自旋鎖、重量級鎖Java
- 【go】golang中鎖的用法-互斥鎖Golang
- 檢視oracle被鎖的表是誰鎖的Oracle
- oracle 查詢鎖 && 解鎖Oracle
- Oracle查詢鎖、解鎖Oracle
- 怎樣快速查出Oracle 資料庫中的鎖等待Oracle資料庫
- oracle的TM鎖、TX鎖知識完全普及Oracle
- 淺談Java中的鎖:Synchronized、重入鎖、讀寫鎖Javasynchronized
- Java中的鎖之樂觀鎖與悲觀鎖Java
- Java中的樂觀鎖——無鎖策略Java
- Mysql中的鎖機制——MyISAM表鎖MySql