成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle并發處理機制的簡單看法

數據庫 Oracle 數據庫運維
在大型應用系統開發過程中,經常會因為忽略對并發處理的考慮而造成系統在生產環境中出現問題,而且并發問題最難跟蹤,本文將就談談Oracle并發處理機制的簡單看法。

Oracle開發過程中,如果你只是獨立地測試你的應用,然后部署,并交給數十個并發用戶使用,就很有可能痛苦地遭遇原先未能檢測到的并發問題。例如,2個用戶同時修改某張訂單,首先他們會查詢這張訂單存在不存在,如果存在,那么修改它的狀態。在并發操作中,用戶1會很奇怪的發現他的修改丟失了。當然,除此之外,在未能夠很好的處理并發問題可能遭遇的情況還有:

◆破壞數據的完整性。

◆隨著用戶數的增多,應用的運行速度減慢。

◆不能很好地擴縮應用來支持大量用戶。

為解決這些問題。首先要引入的是ORACLE的鎖機制。數據庫使用鎖(lock)來保證任何給定時刻最多只有一個事務在修改給定的一段數據。實質上講,正是鎖機制才使并發控制成為可能。對ORACLE的鎖機制可以查看ORACLE官方文檔介紹。以下是對ORACLE鎖的一點總結。

Oracle只在修改時才對數據加行級鎖。正常情況下不會升級到塊級鎖或表級鎖(不過兩段提交期間的一段很短的時間內除外,這是一個不常見的操作)。

◆如果只是讀數據,Oracle絕不會對數據鎖定。不會因為簡單的讀操作在數據行上鎖定。

◆寫入器(writer)不會阻塞讀取器(reader)。換種說法:讀(read)不會被寫(write)阻塞。這一點幾乎與其他所有數據庫都不一樣。在其他數據庫中,讀往往會被寫阻塞。盡管聽上去這個特性似乎很不錯(一般情況下確實如此),但是,如果你沒有充分理解這個思想,而且想通過應用邏輯對應用施加完整性約束,就極有可能做得不對。

◆寫入器想寫某行數據,但另一個寫入器已經鎖定了這行數據,此時該寫入器才會被阻塞。讀取器絕對不會阻塞寫入器。

開發人員要盡可能的考慮以上因素。而且還要意識到這些事ORACLE獨有的。針對其他數據庫,在鎖的應用上略有不同。

以DB2為例

1.Oracle通過具有意向鎖的多粒度封鎖機制進行并發控制,保證數據的一致性。其DML鎖(數據鎖)分為兩個層次(粒度):即表級和行級。通常的DML操作在表級獲得的只是意向鎖(RS或RX),其真正的封鎖粒度還是在行級;DB2也是通過具有意向鎖的多粒度封鎖機制進行并發控制,保證數據的一致性。

其DML鎖(數據鎖)分為兩個層次(粒度):即表級和行級。通常的DML操作在表級獲得的只是意向鎖(IS,SIX或IX),其真正的封鎖粒度也是在行級;另外,在Oracle數據庫中,單純地讀數據(SELECT)并不加鎖,這些都提高了系統的并發程度,Oracle強調的是能夠"讀"到數據,并且能夠快速的進行數據讀取。而DB2的鎖強調的是"讀一致性",進行讀數據(SELECT)時會根據不同的隔離級別(RR,RS,CS)而分別加S,IS,IS鎖,只有在使用UR隔離級別時才不加鎖。從而保證不同應用程序和用戶讀取的數據是一致的。

2. 在支持高并發度的同時,DB2和Oracle對鎖的操縱機制有所不同:Oracle利用意向鎖及數據行上加鎖標志位等設計技巧,減小了Oracle維護行級鎖的開銷,使其在數據庫并發控制方面有著一定的優勢。而DB2中對每個鎖會在鎖的內存(locklist)中申請分配一定字節的內存空間,具體是X鎖64字節內存,S鎖32字節內存(注:DB2 V8之前是X鎖72字節內存而S鎖36字節內存)。

3. Oracle數據庫中不存在鎖升級,而DB2數據庫中當數據庫表中行級鎖的使用超過locklist*maxlocks會發生鎖升級。

4. 在Oracle中當一個session對表進行insert,update,delete時候,另外一個session仍然可以從Orace回滾段或者還原表空間中讀取該表的前映象(before image); 而在DB2中當一個session對表進行insert,update,delete時候,另外一個session仍然在讀取該表數據時候會處于lock wait狀態,除非使用UR隔離級別可以讀取***個session的未提交的值;所以Oracle同一時刻不同的session有讀不一致的現象,而DB2在同一時刻所有的session都是"讀一致"的。

您正在閱讀的是《Oracle并發處理機制的簡單看法

【編輯推薦】

  1. 讓Oracle表列管理更加簡單的三個方法
  2. Oracle中查詢rownum和rowid的區別
  3. 淺析Oracle中的表空間查詢方法
責任編輯:彭凡 來源: cnblogs
相關推薦

2011-03-17 09:20:05

異常處理機制

2010-04-08 15:43:28

Oracle緩沖塊

2011-07-01 14:20:59

Qt 事件

2011-07-01 14:14:34

Qt 事件

2011-04-06 10:27:46

Java異常處理

2024-03-04 10:00:35

數據庫處理機制

2025-06-25 06:18:46

Linux多線程機制

2011-07-21 15:20:41

java異常處理機制

2009-06-19 16:20:14

ASP.NET錯誤處理

2009-09-02 18:34:28

C#鼠標事件

2021-07-03 17:53:52

Java異常處理機制

2009-08-05 18:09:17

C#異常處理機制

2009-07-09 18:15:42

JDBC事務處理

2010-03-05 15:40:16

Python異常

2023-03-08 08:54:59

SpringMVCJava

2023-11-08 09:49:19

Java實踐

2009-07-31 11:28:42

錯誤處理機制ASP.NET

2009-08-06 09:45:53

AOS多核處理機制上網行為管理青蓮

2011-09-05 17:40:40

MTK定時器

2014-06-05 10:38:39

LinkedIn數據架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲 欧美 日韩 在线 | 日韩一区二区在线视频 | 国产日韩一区二区三区 | 国产91丝袜在线播放 | 欧美第一区| 亚洲在线免费观看 | 国产农村妇女毛片精品久久麻豆 | 日韩精品亚洲专区在线观看 | 日韩欧美在线观看 | 日韩国产专区 | 日韩国产中文字幕 | 亚洲免费网 | 奇米超碰| 国产一区二区三区高清 | 伊伊综合网 | 午夜欧美 | 久久久久久国产精品免费免费男同 | 欧美精品网站 | 日本三级电影在线看 | аⅴ资源新版在线天堂 | 福利社午夜影院 | 91精品国产综合久久婷婷香蕉 | 精品产国自在拍 | 国产九九精品视频 | 亚洲人成在线观看 | 日本黄色一级视频 | 亚洲一区二区三区在线 | 国产在线视频一区二区 | 一级黄色片网址 | 天天射天天干 | 婷婷激情五月网 | 亚洲国产91 | 一区二区三区中文 | www.中文字幕 | 一区二区三区高清 | 日韩一级免费电影 | 欧一区二区| 欧美视频在线看 | 午夜在线电影网 | 国内精品久久久久久影视8 最新黄色在线观看 | 国产高清免费 |