<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    斷點(diǎn)

    每天進(jìn)步一點(diǎn)點(diǎn)!
    posts - 174, comments - 56, trackbacks - 0, articles - 21

    ORACLE的鎖機(jī)制

    Posted on 2010-01-14 21:57 斷點(diǎn) 閱讀(527) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle

    數(shù)據(jù)庫(kù)使用鎖(lock)來(lái)保證任何給定時(shí)刻最多只有一個(gè)事務(wù)在修改給定的一段數(shù)據(jù)。實(shí)質(zhì)上講,正是鎖機(jī)制才使并發(fā)控制成為可能。

    ORACLE的封鎖策略:  
      1、只有當(dāng)修改時(shí),Oracle在行級(jí)上鎖定數(shù)據(jù),不要把鎖定上升到塊或表級(jí)。  
      2、Oracle決不會(huì)為讀取而鎖定數(shù)據(jù),簡(jiǎn)單讀取不能在數(shù)據(jù)行上設(shè)置鎖定。  
      3、數(shù)據(jù)的寫(xiě)入器不會(huì)阻塞數(shù)據(jù)讀取器。  
      4、只有當(dāng)另一個(gè)數(shù)據(jù)寫(xiě)入器已經(jīng)鎖定了某行數(shù)據(jù)后,才阻塞其他人對(duì)該行數(shù)據(jù)的寫(xiě)入。數(shù)據(jù)的讀取器決不會(huì)阻塞數(shù)據(jù)的寫(xiě)入器。

     

     

    -------------------------------------------------------------------------
    Oracle并發(fā)處理機(jī)制的簡(jiǎn)單看法。http://www.51testing.com/html/97/n-131297.html

    轉(zhuǎn)載內(nèi)容如下:

    在Oracle開(kāi)發(fā)過(guò)程中,如果你只是獨(dú)立地測(cè)試你的應(yīng)用,然后部署,并交給數(shù)十個(gè)并發(fā)用戶使用,就很有可能痛苦地遭遇原先未能檢測(cè)到的并發(fā)問(wèn)題。例如,2個(gè)用戶同時(shí)修改某張訂單,首先他們會(huì)查詢這張訂單存在不存在,如果存在,那么修改它的狀態(tài)。在并發(fā)操作中,用戶1會(huì)很奇怪的發(fā)現(xiàn)他的修改丟失了。當(dāng)然,除此之外,在未能夠很好的處理并發(fā)問(wèn)題可能遭遇的情況還有:

      ◆破壞數(shù)據(jù)的完整性。

      ◆隨著用戶數(shù)的增多,應(yīng)用的運(yùn)行速度減慢。

      ◆不能很好地?cái)U(kuò)縮應(yīng)用來(lái)支持大量用戶。

      為解決這些問(wèn)題。首先要引入的是ORACLE的鎖機(jī)制。數(shù)據(jù)庫(kù)使用鎖(lock)來(lái)保證任何給定時(shí)刻最多只有一個(gè)事務(wù)在修改給定的一段數(shù)據(jù)。實(shí)質(zhì)上講,正是鎖機(jī)制才使并發(fā)控制成為可能。對(duì)ORACLE的鎖機(jī)制可以查看ORACLE官方文檔介紹。以下是對(duì)ORACLE鎖的一點(diǎn)總結(jié)。

      Oracle只在修改時(shí)才對(duì)數(shù)據(jù)加行級(jí)鎖。正常情況下不會(huì)升級(jí)到塊級(jí)鎖或表級(jí)鎖(不過(guò)兩段提交期間的一段很短的時(shí)間內(nèi)除外,這是一個(gè)不常見(jiàn)的操作)。

      ◆如果只是讀數(shù)據(jù),Oracle絕不會(huì)對(duì)數(shù)據(jù)鎖定。不會(huì)因?yàn)楹?jiǎn)單的讀操作在數(shù)據(jù)行上鎖定。

      ◆寫(xiě)入器(writer)不會(huì)阻塞讀取器(reader)。換種說(shuō)法:讀(read)不會(huì)被寫(xiě)(write)阻塞。這一點(diǎn)幾乎與其他所有數(shù)據(jù)庫(kù)都不一樣。在其他數(shù)據(jù)庫(kù)中,讀往往會(huì)被寫(xiě)阻塞。盡管聽(tīng)上去這個(gè)特性似乎很不錯(cuò)(一般情況下確實(shí)如此),但是,如果你沒(méi)有充分理解這個(gè)思想,而且想通過(guò)應(yīng)用邏輯對(duì)應(yīng)用施加完整性約束,就極有可能做得不對(duì)。

      ◆寫(xiě)入器想寫(xiě)某行數(shù)據(jù),但另一個(gè)寫(xiě)入器已經(jīng)鎖定了這行數(shù)據(jù),此時(shí)該寫(xiě)入器才會(huì)被阻塞。讀取器絕對(duì)不會(huì)阻塞寫(xiě)入器。

      開(kāi)發(fā)人員要盡可能的考慮以上因素。而且還要意識(shí)到這些事ORACLE獨(dú)有的。針對(duì)其他數(shù)據(jù)庫(kù),在鎖的應(yīng)用上略有不同。

      以DB2為例

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

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

      2. 在支持高并發(fā)度的同時(shí),DB2和Oracle對(duì)鎖的操縱機(jī)制有所不同:Oracle利用意向鎖及數(shù)據(jù)行上加鎖標(biāo)志位等設(shè)計(jì)技巧,減小了Oracle維護(hù)行級(jí)鎖的開(kāi)銷,使其在數(shù)據(jù)庫(kù)并發(fā)控制方面有著一定的優(yōu)勢(shì)。而DB2中對(duì)每個(gè)鎖會(huì)在鎖的內(nèi)存(locklist)中申請(qǐng)分配一定字節(jié)的內(nèi)存空間,具體是X鎖64字節(jié)內(nèi)存,S鎖32字節(jié)內(nèi)存(注:DB2 V8之前是X鎖72字節(jié)內(nèi)存而S鎖36字節(jié)內(nèi)存)。

      3. Oracle數(shù)據(jù)庫(kù)中不存在鎖升級(jí),而DB2數(shù)據(jù)庫(kù)中當(dāng)數(shù)據(jù)庫(kù)表中行級(jí)鎖的使用超過(guò)locklist*maxlocks會(huì)發(fā)生鎖升級(jí)。

      4. 在Oracle中當(dāng)一個(gè)session對(duì)表進(jìn)行insert,update,delete時(shí)候,另外一個(gè)session仍然可以從Orace回滾段或者還原表空間中讀取該表的前映象(before image); 而在DB2中當(dāng)一個(gè)session對(duì)表進(jìn)行insert,update,delete時(shí)候,另外一個(gè)session仍然在讀取該表數(shù)據(jù)時(shí)候會(huì)處于lock wait狀態(tài),除非使用UR隔離級(jí)別可以讀取第一個(gè)session的未提交的值;所以O(shè)racle同一時(shí)刻不同的session有讀不一致的現(xiàn)象,而DB2在同一時(shí)刻所有的session都是“讀一致”的。


    posted @ 2009-11-28 17:50 斷點(diǎn) 閱讀(24) | 評(píng)論 (0)
    主站蜘蛛池模板: 2020因为爱你带字幕免费观看全集| 国产色爽免费视频| 成人午夜免费视频| 亚洲国产精品综合久久20| 亚洲AV无码一区东京热| 免费成人av电影| 性色av免费观看| 5555在线播放免费播放| 日韩免费在线观看视频| 99精品视频在线观看免费| 亚洲国产成人AV网站| 在线亚洲高清揄拍自拍一品区| 久久久久亚洲精品日久生情| 亚洲国产a∨无码中文777| 久久久久噜噜噜亚洲熟女综合| 免费a级毛片网站| 国产老女人精品免费视频| 在线观看AV片永久免费| 最刺激黄a大片免费网站| 黄色免费在线网站| 91视频精品全国免费观看| 精品国产呦系列在线观看免费| 青草青草视频2免费观看| 亚洲av永久无码天堂网| 四虎亚洲精品高清在线观看| 亚洲av日韩av无码av| 亚洲一级免费视频| 亚洲国产最大av| 亚洲AV无码成人网站在线观看| 亚洲乱人伦中文字幕无码| 亚洲精品无码中文久久字幕| 亚洲精品无码av片| 亚洲av成人一区二区三区观看在线| 亚洲爆乳无码精品AAA片蜜桃| 国产精品亚洲综合天堂夜夜| 亚洲六月丁香婷婷综合| 妞干网免费视频在线观看| 亚洲电影唐人社一区二区| 亚洲成?Ⅴ人在线观看无码| 91精品免费在线观看| 亚洲白色白色永久观看|