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

Oracle Latch與latch的沖突表現

數據庫 Oracle
以下的文章主要介紹的是Oracle Latch與latch的沖突,其中也包括了對Oracle latch概念的描述,以下就是文章的具體內容描述。

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

什么是Oracle latch

Latch是用于保護SGA區中共享數據結構的一種串行化鎖定機制。Latch的實現是與操作系統相關的,尤其和一個進程是否需要等待一個latch、需要等待多長時間有關。

Latch 是一種能夠極快地被獲取和釋放的鎖,它通常用于保護描述buffer cache中block的數據結構。與每個latch相聯系的還有一個清除過程,當持有latch的進程成為死進程時,該清除過程就會被調用。Latch 還具有相關級別,用于防止死鎖,一旦一個進程在某個級別上得到一個Oracle latch,它就不可能再獲得等同或低于該級別的latch。

Latch與Enqueue(隊列)

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

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

何時需要latch

當一個進程準備訪問SGA中的數據結構時,它就需要獲得一個lOracle atch。當進程獲得latch后,它將一直持有該latch直到它不再使用此數據結構,這時latch才會被釋放。可通過latch名稱來區分它所保護的不同數據結構。

Oracle 使用元指令對latch進行操作, 當所需的latch已被其他進程持有時,執行指令進程將停止執行部分指令,直到該latch被釋放為止。從根本上講,latch防止并發訪問共享數據結 構,由于設置和釋放latch的指令是不可分割的,操作系統就可以保證只有一個進程獲得latch,又由于這只是單條指令,所以執行速度很快。

latch 被持有的時間是很短,而且提供了當持有者不正常中斷時的清除機制,該清除工作是由Oracle后臺進程PMON來完成的。

什么導致latch沖突

Latch 保護SGA中的數據結構被多個用戶同時訪問,如果一個進程不能立即得到所需latch,它就必須等待,這就導致了CPU的額外負擔和系統的速度降低。額外 的CPU使用是進程‘spining’導致的,‘spining’是指進程定時地重復嘗試獲取Oracle latch,在連續兩次之間,進程處于休眠狀態,在得到 latch之前,spining過程將重復進行下去。

如何標識內部latch的沖突

Server manager monitor是一個相當有用的來監視latch等待、請求和沖突的工具。也可查詢相關的數據字典表:v$latch, v$latchholder, v$latchname。

v$latch 表的每一行包括了對不同類型latch的統計,每一列反映了不同類型的latch請求的活動情況。不同類型的latch請求之間的區別在于,當latch 不可立即獲得時,請求進程是否繼續進行。按此分類,latch請求的類型可分為兩類:willing-to-wait和immediate。

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

Immediate:是指如果所請求的latch不能立即得到,請求進程就不再等待,而是繼續執行下去。

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

GETS---成功地以Willing-to-wait請求類型請求一個Oracle latch的次數。

MISSES---初始以Willing-to-wait請求類型請求一個latch不成功的次數。

SLEEPS---初始以Willing-to-wait請求類型請求一個latch不成功后,進程等待獲取latch的次數。

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

IMMEDIATE_GETS---以Immediate請求類型成功地獲得一個latch的次數。

IMMEDIATE_MISSES---以Immediate請求類型請求一個Oracle latch不成功的次數。

【編輯推薦】

  1. Oracle存儲過程中如何準確的實現分頁
  2. LTO歸檔解決方案容量、性能和功能介紹
  3. Oracle數據庫與FoxPro數據如何轉換
  4. Oracle數據庫中如何用GROUPING SETS進行分組自定義
  5. 用Oracle SQL語句來實現進制間的相互轉換
責任編輯:佚名 來源: 博客園
相關推薦

2022-10-08 00:00:05

SQL機制結構

2010-05-05 18:01:29

Oracle時間

2010-08-05 11:08:27

DB2存儲過程

2016-02-24 11:25:43

DevOps運維

2010-04-14 17:29:33

Oracle數據庫

2010-07-22 08:28:17

Java生態系統Sun時代Oracle時代

2011-08-02 16:21:07

XDB默認端口

2010-04-20 14:18:23

2009-07-14 17:58:55

Jython性能

2010-01-05 17:02:47

Debian系統

2010-03-29 12:54:45

Oracle spat

2010-04-12 11:21:35

Oracle優化CPU

2010-04-30 13:35:28

Oracle 11g

2015-03-10 13:50:42

smartycss語法

2011-06-15 10:10:17

Oracle11g

2010-04-02 09:07:26

Oracle sqlp

2010-08-04 09:03:53

PerlOracle 10g

2014-09-22 16:03:44

沖突域廣播域

2023-09-07 09:44:22

Java并發

2010-08-16 10:45:46

DB2 9.7
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频三区 | 欧美一区二区免费在线 | 韩日精品一区 | 欧美精品99 | 99欧美精品 | 97久久精品午夜一区二区 | 日本免费一区二区三区视频 | 久久6视频 | 91久久精品国产91久久 | 9999国产精品欧美久久久久久 | 久久这里只有精品首页 | 久久高清精品 | 久久国产成人 | 拍真实国产伦偷精品 | 久久99精品久久久久久国产越南 | 国产精品成人一区 | 精品国产一区二区三区日日嗨 | 午夜精品三区 | 紧缚调教一区二区三区视频 | 成人免费大片黄在线播放 | 日韩三区 | 欧美视频二区 | 久久久青草婷婷精品综合日韩 | 亚洲日本免费 | 亚洲欧美一区二区三区情侣bbw | 久久久久久久国产精品视频 | 日韩一区二区在线观看 | 中文字幕91av | 99精品国产一区二区三区 | 日韩人体在线 | 亚洲国产精品一区二区三区 | 最新av在线播放 | 北条麻妃一区二区三区在线视频 | 国产精品人人做人人爽 | 成人在线视频免费观看 | 久久九精品 | 婷婷综合 | 日本a网站 | 97av| 97伦理电影 | h在线观看 |