999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Oracle數據庫鎖的研究

2021-08-09 03:23:48王志國周笑宇蘇仕斌
電子技術與軟件工程 2021年11期
關鍵詞:一致性數據庫用戶

王志國 周笑宇* 蘇仕斌

(1.中國人民解放軍聯勤保障部隊第九六三醫院 黑龍江省佳木斯市 154002)

(2.中國人民解放軍總醫院醫學創新研究部 北京市 100853)

數據庫是多個用戶使用的共享資源。 當多個用戶同時訪問同一數據庫時,多個事務將同時訪問數據庫中的相同數據,此時,多個用戶很有可能共同進行對于該數據庫的查詢、修改等操作。如果對于并發操作不加以管理,則可能會讀寫錯誤的數據,并破壞數據庫四大特性中的一致性。 鎖是數據庫對并發訪問的、在指定權限下可以進行共同訪問的管理的機制,它用于保護以合理的方式被修改的數據。 當事務提交或者回滾后,對于該單位進行釋放資源,此時其他用戶可以正常的更新數據。

1 Oralce數據庫中關于鎖的定義

Oracle 關于鎖的機制是輕量級的,它直接將鎖作為數據塊的屬性,存儲在數據塊的頭中,而不是建立用于數據鎖管理的鎖列表。鎖是數據塊本身的一個屬性,每個數據塊本身將數據的信息存儲在自己的數據塊中。這個地方叫做ITL。每當此數據塊上有活動事務時,它的信息都會記錄在該數據塊中,以供后續操作查詢,確保事務的一致性。在oracle 數據庫中,沒有實際屬于對象或數據的鎖。鎖的信息是物理屬性的一部分,而不是邏輯屬性。

2 數據庫鎖的分類

2.1 按照操作分類

2.1.1 DML 鎖DML 鎖(數據鎖),用于確保數據庫數據的完全度,其中包括行級鎖(TX 鎖)、表級鎖(TM 鎖)。

2.1.2 DDL 鎖

DDL鎖(數據字典鎖),用于保護數據庫創建的對象的完整組成,如視圖、索引、存儲過程等。其中包排他DDL 鎖(Exclusive DDL lock)、共享DDL 鎖(Share DDL lock)、可中斷解析鎖(Breakable parse locks)。

2.2 按照鎖的粒度劃分

2.2.1 行級鎖

行級鎖指對正在被修改的行進行鎖定,其他用戶可以其他沒有被鎖定的數據行。當數據庫執行刪除、更新等操作時,會自動將該事務在表中的操作行上獲得獨占鎖。當事務啟動第一次修改時,它將獲得TX鎖(事務鎖),并將保持該鎖,直到事務被提交(COMMIT)或被回滾(ROLLBACK)。

在使用以下語句時,Oracle 會自動應用行級鎖:insert, update, delete, select…for update

2.2.2 表級鎖

表級鎖用于確保表的結構在其他事務對于進行該表操作時不會改變。當用戶對表執行 DDL 或 DML 操作時,oracle 數據庫會自動給該表加一個表級鎖。當行級鎖被事務操作后,事務會自動繼承該行級鎖上級的表級鎖(共享鎖), 以防止其他事務生成的DDL 語句,通過DDL 操作,來影響記錄行的更新。

圖1:同時用兩個賬戶對同一條數據執行更新

圖2:查詢當前的TX 鎖和TM 鎖

圖3:查詢object_id

圖4:scott 用戶進行回滾操作

圖5:scott 用戶回滾后查詢v$lock 視圖

表級鎖按照鎖定的強度,可以分為以下的五個類型:

(1)行共享:禁止其他的排他鎖對表進行鎖定;

(2)行排他:禁止使用除該排他鎖之外的其他共享鎖、排他鎖;

圖6:system 用戶進行回滾操作

圖7:system 用戶回滾后查詢v$lock 視圖

(3)共享鎖:對當前操作的表進行鎖定,僅允許非該用戶的其他用戶進行查詢操作,并且禁止其他用戶插入、更新和刪除行;

在出現以下條件之一時,共享鎖就會被當前所持有的事務進行釋放:

A、當事務被ROLLBACK 或COMMIT。

B、數據庫被完全退出。

C、程序被強行關閉或停止。

(4)共享排他鎖:禁止使用共享鎖,以及限制級別更高的的數據鎖;

(5)排他鎖:數據庫中所有鎖中對于權限限制最高的鎖,僅允許非當前用戶查詢該表的行。禁止修改和鎖定表。

3 關于鎖的驗證

分別采用兩個不同的賬號登錄同一數據庫,對oracle 數據庫中自帶的scott 用戶下的emp 表進行更新操作,如圖1 所示。

可以很明顯的看出,此時第二個賬戶并沒有進行update 操作,這是因為執行update 命令時,oracle 數據庫會自動將該行數據添加行級鎖,使其他用戶無法更新該行數據。為了驗證該說法,此時查詢v$lock 視圖,如圖2 所示。

可以很明顯的看出,v$lock 視圖中,添加了關于該行語句的TX 鎖和TM 鎖,為了進一步確認上述鎖是由emp 表所產生的,我們通過查詢dba_objects 表來進行進一步的驗證,如圖3 所示。

明顯看到,該進程ID 號是由于對于dba_object 表進行加鎖所產生的,為了進一步驗證說法,此時對兩個事務均進行回滾操作,如圖4 所示。

3.1 scott用戶進行回滾操作

此時可以很明顯的看出,當第一個用戶中的update 被回滾后,TX 鎖瞬間被解鎖,資源被釋放,才使得第二個用戶的update 得以成功執行,此時查看一下v$lock 視圖,可以發現,此時TX 鎖的ID 號已經改變,且原來的ID 號已經消失,如圖5 所示。

3.2 system用戶進行回滾操作

如圖6 所示。

此時查詢v$lock 視圖,可以很明顯的發現,所有的TX 鎖和TM 鎖均已經消失,如圖7 所示。

4 死鎖

4.1 死鎖的定義

死鎖是指在兩個或多個進程執行過程中,由于資源競爭或通信原因而導致的阻塞現象。如果沒有外力,只能互相等待分配資源,所有的進程都無法繼續運行。

4.2 死鎖的產生原因

在兩個或多個任務中,如果每個任務都互相對于其他已經被試圖鎖定的任務進行了加鎖的操作,此時這些任務會互相等待對方進行資源分配,造成互相之間影響的阻塞現象,因此產生了死鎖。例如:事務A 對于行 1 的共享鎖進行獲取。事務 B 對于行 2 的共享鎖進行獲取。此時事務A,因為等待事務B 完成并釋放事務A 對于行2現有的共享鎖,從而產生了排他鎖,此時事務B,因為等待事務A完成并釋放事務B 對于行2 現有的共享鎖,從而也產生了排他鎖。但是由于事務A 等待事務B 完成之后才能進行釋放該行級鎖,事務B 也在等待事務A 完成之后才能釋放該行級鎖,兩個事務互相阻塞,產生了閉環,所以造成了死鎖。這就是死鎖中的循環依賴:事務 A 和事務B 之間相互依賴,從而產生了閉環,導致了死鎖的產生。

根據Oracle 數據庫的機制,該數據庫會自動發現數據庫中產生的死鎖,并通過破壞死鎖條件之一進行釋放部分資源,從而對某個事務的全部鎖進行釋放,或直接消除代價最小的事務,從而可以使其他單位的事務繼續運行。

4.3 避免死鎖的措施

(1)在UPDATE 和DELETE 后,應及時的進行COMMIT 或ROLLBACK 操作,以免表或行的鎖定時間過長,造成死鎖。

(2)當多個事務同時對于某個數據表進行操作時,此時不要使用共享鎖。相反,請使用共享更新鎖,以便其他用戶可以使用行級鎖來提高并行性。

(3)在高應用程序負載期間不適合修改相關的數據結構(表,視圖,觸發器,存儲過程等)。

5 結語

Oracle 數據庫之所以能成為全世界最廣泛使用的數據庫之一,原因之一就是因為它對于事務的原子性、一致性、隔離性、持久性的保障,而鎖是oracle 數據庫為了確保數據的一致性、實現并發控制的非常重要的技術。在日常oracle 數據庫的維護和開發中,要深刻理解鎖的概念,并確保開發過程中不要出現死鎖,這樣才能確保數據更加健壯、穩定。

猜你喜歡
一致性數據庫用戶
關注減污降碳協同的一致性和整體性
公民與法治(2022年5期)2022-07-29 00:47:28
注重教、學、評一致性 提高一輪復習效率
IOl-master 700和Pentacam測量Kappa角一致性分析
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 亚洲人成影院午夜网站| 精品亚洲麻豆1区2区3区| 偷拍久久网| 国产啪在线| 国内精品视频| 亚洲精选无码久久久| 欧美精品v欧洲精品| 无码视频国产精品一区二区| 国产成人一二三| 国产精品女在线观看| 亚洲制服丝袜第一页| 国产成人盗摄精品| 亚洲香蕉在线| 黄色网页在线播放| 98精品全国免费观看视频| 日韩毛片在线视频| 欧美国产菊爆免费观看 | 九九热视频在线免费观看| 午夜a级毛片| 一级成人a毛片免费播放| 国产va欧美va在线观看| 在线无码私拍| 欧美性精品| 亚洲天堂.com| 草逼视频国产| 精品国产网站| www.狠狠| 欧美精品亚洲精品日韩专区| 少妇露出福利视频| 污视频日本| 国产精品视频公开费视频| 午夜不卡视频| 国产乱人视频免费观看| 国产爽歪歪免费视频在线观看| 亚洲第一综合天堂另类专| 亚洲欧美一区二区三区麻豆| 欧美性天天| 99精品国产自在现线观看| 国产成人AV男人的天堂| 亚洲人成在线精品| 日本国产精品| 国产免费网址| 国产欧美日韩在线一区| 国产精品区视频中文字幕| 54pao国产成人免费视频| 久久综合色天堂av| 成人年鲁鲁在线观看视频| 久久国产热| 国产成人无码AV在线播放动漫| 成AV人片一区二区三区久久| 天堂在线亚洲| 综合网久久| 国产精品高清国产三级囯产AV| 日韩人妻无码制服丝袜视频| 成人午夜视频免费看欧美| 一级毛片免费播放视频| 国产杨幂丝袜av在线播放| 亚洲人成网线在线播放va| 69av在线| 91在线一9|永久视频在线| 欧美成人影院亚洲综合图| 午夜无码一区二区三区在线app| 国产主播喷水| 亚洲日本精品一区二区| 性视频一区| 嫩草影院在线观看精品视频| 国产黑丝一区| 亚洲欧美日韩中文字幕在线一区| 日韩123欧美字幕| 中国一级特黄视频| 国产成人91精品免费网址在线 | 成人精品区| 亚洲欧洲自拍拍偷午夜色| 91麻豆国产视频| 欧美日韩在线成人| www欧美在线观看| 热久久这里是精品6免费观看| av色爱 天堂网| 国产成人综合久久精品尤物| 国产午夜一级毛片| 亚洲高清国产拍精品26u| 青青草原偷拍视频|