日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle入门(十五)之数据库锁

發(fā)布時間:2023/12/3 数据库 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle入门(十五)之数据库锁 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、鎖的概念

  • 鎖是數(shù)據(jù)庫用來控制共享資源并發(fā)訪問的機(jī)制。
  • 鎖用于保護(hù)正在被修改的數(shù)據(jù)
  • 直到提交或回滾了事務(wù)之后,其他用戶才可以更新數(shù)據(jù)

?

二、鎖定的優(yōu)點(diǎn)

  • 一致性 - 一次只允許一個用戶修改數(shù)據(jù)
  • 完整性 - 為所有用戶提供正確的數(shù)據(jù)。如果一個用戶進(jìn)行了修改并保存,所做的修改將反映給所有用戶
  • 并行性 -允許多個用戶訪問同一數(shù)據(jù)

?

三、鎖的類型

?

四、行級鎖

對正在被修改的行進(jìn)行鎖定。其他用戶可以訪問除被鎖定的行以外的行

?

?

  • 行級鎖是一種排他鎖,防止其他事務(wù)修改此行
  • 在使用以下語句時,Oracle會自動應(yīng)用行級鎖:
  • INSERT
  • UPDATE
  • DELETE
  • SELECT … FOR UPDATESELECT … FOR UPDATE語句允許用戶一次鎖定多條記錄進(jìn)行更新使用COMMIT或ROLLBACK語句釋放鎖SELECT … FOR UPDATE語法:

    SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];

    例子:

    SQL> SELECT * FROM emp WHERE sal=1000FOR UPDATE; SQL> UPDATE emp SET sal = 3000WHERE sal =1000; SQL> COMMIT; SQL> SELECT * FROM scott.emp WHERE sal=1000FOR UPDATE WAIT 5; SQL> SELECT * FROM scott.emp WHERE sal=1000FOR UPDATE NOWAIT ;

    ?

    ?

    五、表級鎖

    ?

    ?

    鎖定整個表,限制其他用戶對表的訪問。

    使用命令顯示地鎖定表,應(yīng)用表級鎖的語法是:
    ?LOCK TABLE table_name IN mode MODE;

    ?

    • 行共享 (ROW SHARE) – 禁止排他鎖定表
    • 行排他(ROW EXCLUSIVE) – 禁止使用排他鎖和共享鎖
    • 共享鎖(SHARE)
  • 鎖定表,僅允許其他用戶查詢表中的行
  • 禁止其他用戶插入、更新和刪除行
  • 多個用戶可以同時在同一個表上應(yīng)用此鎖
    • 共享行排他(SHARE ROW EXCLUSIVE) – 比共享鎖更多的限制,禁止使用共享鎖及更高的鎖
    • 排他(EXCLUSIVE) – 限制最強(qiáng)的表鎖,僅允許其他用戶查詢該表的行。禁止修改和鎖定表

    ?

    六、死鎖

    • 當(dāng)兩個事務(wù)相互等待對方釋放資源時,就會形成死鎖
    • Oracle會自動檢測死鎖,并通過結(jié)束其中的一個事務(wù)來解決死鎖

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Oracle入门(十五)之数据库锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。