国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

ORACLE 鎖

2024-08-29 13:29:45
字體:
來源:轉載
供稿:網友
  oracle數據庫是現今數據庫領域應用最廣泛的,同時它也是一個龐大的系統,全面了解它、玩轉它不但需要一定的理論知識,更需要開發經驗與工程經驗。本人是oracle一愛好者,以下是本人對oracle鎖的一些經驗,希望能與大家共同分享。

  oracle鎖具體分為以下幾類:

1.按用戶與系統劃分,可以分為自動鎖與顯示鎖

  自動鎖:當進行一項數據庫操作時,缺省情況下,系統自動為此數據庫操作獲得所有有必要的鎖。

  顯示鎖:某些情況下,需要用戶顯示的鎖定數據庫操作要用到的數據,才能使數據庫操作執行得更好,顯示鎖是用戶為數據庫對象設定的。

2.按鎖級別劃分,可分為共享鎖與排它鎖

  共享鎖:共享鎖使一個事務對特定數據庫資源進行共享訪問——另一事務也可對此資源進行訪問或獲得相同共享鎖。共享鎖為事務提供高并發性,但如拙劣的事務設計+共享鎖容易造成死鎖或數據更新丟失。

  排它鎖:事務設置排它鎖后,該事務單獨獲得此資源,另一事務不能在此事務提交之前獲得相同對象的共享鎖或排它鎖。

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首先必須取得這塊內存區域的閂鎖,才能向此塊內存寫入信息。

  以上是 本人對oracle鎖的一些總結,不足之處還望大家海涵,同時也希望大家多提出自己對oracle鎖的一些看法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开化县| 礼泉县| 南安市| 兴海县| 简阳市| 那曲县| 修文县| 太谷县| 和硕县| 嘉黎县| 南阳市| 沙坪坝区| 宜黄县| 长岭县| 崇文区| 宁强县| 莱芜市| 宝兴县| 拜泉县| 古田县| 平乐县| 日土县| 宿松县| 义乌市| 江北区| 茌平县| 大丰市| 泗水县| 渝北区| 清徐县| 邛崃市| 新竹县| 兰溪市| 临夏县| 渝中区| 荆门市| 九台市| 潼关县| 昭苏县| 康马县| 灵川县|