日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
OracleLatch與latch的沖突表現(xiàn)

Oracle Rdbms在實(shí)際操作中運(yùn)用到各種類型的相關(guān)的鎖定機(jī)制,Oracle latch就是其經(jīng)常使用的一種,以下的文章主要是介紹latch(閂)的概念,以及理解latch的實(shí)現(xiàn)方法并說明引起latch沖突的原因。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比波密網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式波密網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋波密地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。

什么是Oracle latch

Latch是用于保護(hù)SGA區(qū)中共享數(shù)據(jù)結(jié)構(gòu)的一種串行化鎖定機(jī)制。Latch的實(shí)現(xiàn)是與操作系統(tǒng)相關(guān)的,尤其和一個(gè)進(jìn)程是否需要等待一個(gè)latch、需要等待多長時(shí)間有關(guān)。

Latch 是一種能夠極快地被獲取和釋放的鎖,它通常用于保護(hù)描述buffer cache中block的數(shù)據(jù)結(jié)構(gòu)。與每個(gè)latch相聯(lián)系的還有一個(gè)清除過程,當(dāng)持有l(wèi)atch的進(jìn)程成為死進(jìn)程時(shí),該清除過程就會(huì)被調(diào)用。Latch 還具有相關(guān)級(jí)別,用于防止死鎖,一旦一個(gè)進(jìn)程在某個(gè)級(jí)別上得到一個(gè)Oracle latch,它就不可能再獲得等同或低于該級(jí)別的latch。

Latch與Enqueue(隊(duì)列)

Enqueue 是Oracle使用的另一種鎖定機(jī)制,它更加復(fù)雜,允許幾個(gè)并發(fā)進(jìn)程不同程度地共享某些資源。任何可被并發(fā)使用的對象均可使用enqueue加以保護(hù)。一 個(gè)典型的例子是表的鎖定,我們允許在一個(gè)表上有不同級(jí)別的共享。與latch不同之處在于,enqueue是使用操作系統(tǒng)特定的鎖定機(jī)制,一個(gè) enqueue允許用戶在鎖上存貯一個(gè)標(biāo)記,來表明請求鎖的模式。

操作系統(tǒng)lock manager跟蹤所有被鎖定的資源,如果某個(gè)進(jìn)程不能獲取它所請求的那種鎖,操作系統(tǒng)就把請求進(jìn)程置于一個(gè)等待隊(duì)列中,該隊(duì)列按FIFO原則調(diào)度,而在 latches中是沒有象enqueue中排序的等待隊(duì)列,latch等待進(jìn)程要么使用定時(shí)器來喚醒和重試,要么spin(只用于多處理器情況下)。

何時(shí)需要latch

當(dāng)一個(gè)進(jìn)程準(zhǔn)備訪問SGA中的數(shù)據(jù)結(jié)構(gòu)時(shí),它就需要獲得一個(gè)lOracle atch。當(dāng)進(jìn)程獲得latch后,它將一直持有該latch直到它不再使用此數(shù)據(jù)結(jié)構(gòu),這時(shí)latch才會(huì)被釋放??赏ㄟ^latch名稱來區(qū)分它所保護(hù)的不同數(shù)據(jù)結(jié)構(gòu)。

Oracle 使用元指令對latch進(jìn)行操作, 當(dāng)所需的latch已被其他進(jìn)程持有時(shí),執(zhí)行指令進(jìn)程將停止執(zhí)行部分指令,直到該latch被釋放為止。從根本上講,latch防止并發(fā)訪問共享數(shù)據(jù)結(jié) 構(gòu),由于設(shè)置和釋放latch的指令是不可分割的,操作系統(tǒng)就可以保證只有一個(gè)進(jìn)程獲得latch,又由于這只是單條指令,所以執(zhí)行速度很快。

latch 被持有的時(shí)間是很短,而且提供了當(dāng)持有者不正常中斷時(shí)的清除機(jī)制,該清除工作是由Oracle后臺(tái)進(jìn)程PMON來完成的。

什么導(dǎo)致latch沖突

Latch 保護(hù)SGA中的數(shù)據(jù)結(jié)構(gòu)被多個(gè)用戶同時(shí)訪問,如果一個(gè)進(jìn)程不能立即得到所需latch,它就必須等待,這就導(dǎo)致了CPU的額外負(fù)擔(dān)和系統(tǒng)的速度降低。額外 的CPU使用是進(jìn)程‘spining’導(dǎo)致的,‘spining’是指進(jìn)程定時(shí)地重復(fù)嘗試獲取Oracle latch,在連續(xù)兩次之間,進(jìn)程處于休眠狀態(tài),在得到 latch之前,spining過程將重復(fù)進(jìn)行下去。

如何標(biāo)識(shí)內(nèi)部latch的沖突

Server manager monitor是一個(gè)相當(dāng)有用的來監(jiān)視latch等待、請求和沖突的工具。也可查詢相關(guān)的數(shù)據(jù)字典表:v$latch, v$latchholder, v$latchname。

v$latch 表的每一行包括了對不同類型latch的統(tǒng)計(jì),每一列反映了不同類型的latch請求的活動(dòng)情況。不同類型的latch請求之間的區(qū)別在于,當(dāng)latch 不可立即獲得時(shí),請求進(jìn)程是否繼續(xù)進(jìn)行。按此分類,latch請求的類型可分為兩類:willing-to-wait和immediate。

Willing-to-wait : 是指如果所請求的latch不能立即得到,請求進(jìn)程將等待一很短的時(shí)間后再次發(fā)出請求。進(jìn)程一直重復(fù)此過程直到得到latch。

Immediate:是指如果所請求的latch不能立即得到,請求進(jìn)程就不再等待,而是繼續(xù)執(zhí)行下去。

在v$latch中的以下字段反映了Willing-to-wait請求:

GETS---成功地以Willing-to-wait請求類型請求一個(gè)Oracle latch的次數(shù)。

MISSES---初始以Willing-to-wait請求類型請求一個(gè)latch不成功的次數(shù)。

SLEEPS---初始以Willing-to-wait請求類型請求一個(gè)latch不成功后,進(jìn)程等待獲取latch的次數(shù)。

在v$latch中的以下字段反映了Immediate類請求:

IMMEDIATE_GETS---以Immediate請求類型成功地獲得一個(gè)latch的次數(shù)。

IMMEDIATE_MISSES---以Immediate請求類型請求一個(gè)Oracle latch不成功的次數(shù)。

【編輯推薦】

  1. Oracle存儲(chǔ)過程中如何準(zhǔn)確的實(shí)現(xiàn)分頁
  2. LTO歸檔解決方案容量、性能和功能介紹
  3. Oracle數(shù)據(jù)庫與FoxPro數(shù)據(jù)如何轉(zhuǎn)換
  4. Oracle數(shù)據(jù)庫中如何用GROUPING SETS進(jìn)行分組自定義
  5. 用Oracle SQL語句來實(shí)現(xiàn)進(jìn)制間的相互轉(zhuǎn)換

標(biāo)題名稱:OracleLatch與latch的沖突表現(xiàn)
轉(zhuǎn)載來于:http://www.5511xx.com/article/cocsjhg.html