首頁 資料庫 mysql教程 latch:librarycache等待(只存在于9i,10g)

latch:librarycache等待(只存在于9i,10g)

Jun 07, 2016 pm 03:22 PM
l latch 等待

latch: library cache等待(只存在于9i,10g) SQL-ASCII-Hash_value-hash bucket,然后申请保护该bucket的library cache latch(3-67个latch保护成千上万个hash bucket),这个latch是为了保护会话在检索bucket对应的hash chain的过程中,hash chain结构不被改

latch: library cache等待(只存在于9i,10g) SQL->ASCII->Hash_value值->hash bucket,然后申请保护该bucket的library cache latch(3-67个latch保护成千上万个hash bucket),这个latch是为了保护会话在检索bucket对应的hash chain的过程中,hash chain结构不被改变。 在chain上会挂着一串父cursor头的指针,每检索到一个指针,就到所指向的内存区,去看这个父cursor是否符合(sql文本是否相同),chain发现相应父cursor后,再寻觅里面的子cursor,找到可重复利用的综合型计划等信息,就会释放latch,这个过程叫软解析。 假如没有找到可重复利用的cursor,就要hard parsing了。先释放library cache latch,获得shared pool latch锁存器,检索并分配可用的chunk,然后释放shared pool latch,这些chunk就算是进入library cache中了。然后查询优化器生成执行计划,并存到相应chunk上。再次获得library cache latch,然后将这些chunk挂到hash chain上。
若在library cache latch获得发生争用,就须等待latch: library cache事件。然后SQL才开始执行,此时转入library cache pin+lock(null模式) select value from v$parameter where name='cpu_count'; --32个cpu select rownum,name,gets from v$latch_children where name like '%library%'; --37个library cache 子锁存器,一般认为子锁存器数量是比cpu_count大的最小质数值,可以被 _KGL_LATCH_COUNT 参数控制 原因: 1.hard parsing或soft parsing过多,硬解析时除了检索library cache的hash chain费时间,还得花时间额外分配chunk。就算是仅有软解析,也会发生争用,因为其还有语法检查语义检查、库高速缓冲区检索这些过程,在这些过程中也得先获得library cache latch。这个等待伴随shared pool latch等待就是硬解析过多(因为要分配chunk),没有后者就应该仅是软解释过多。
2.High Versions Count,子游标过多,v$sqlarea的version_count字段显示有多少个子游标,或者v$sql的child_number字段,从0开始算的。bucket->hash chain->检索到这个文本对应的cursor,还得检索这个父cursor下面的几个子cursor,例如不同用户发出的相同sql就会有一样的父cursor,此时获得library cache latch的时间会延长。 High version counts can easily cause high contention for library cache latches. A process parsing a SQL statement with many versions (children cursors) will need to scan through all these children while holding on to a library cache latch. This means that other processes needing the same latch will have to wait and can lead to significant database-wide performance degradation. 3.SGA区发生OS层面的page out,
解决: 1.要使用绑定变量减少硬解析,软解释最好也设法减少,例如应用上用缓存等。 2.session_cached_cursors参数默认为0,设为50以上比较好。设定了该值后Oracle将执行三次以上的SQL Cursor信息保存到PGA内,信息包括SQL文本与对于库高速缓存的指针值。用户一旦提交SQL,首先看PGA,存在的话直接跳到library cache的cursor那。所以这个参数是softer soft parse,软解析的软解析。因为这个参数针对会话,所以维持会话的连接性才能有效,例如配置中间件连接池。itpub的vage说,软软解析时,10.2.0.1中有,10.2.0.2--10.2.0.4没有,到10.2.0.5又有了。到11G又没了,搞不明白Oracle是咋想的。 3.HP_UX,AIX用LOCK_SGA参数设为true(默认false),SunOS用_USE_ISM参数设为true(默认true)。
后续: 11g,这个等待事件library cache: mutex X就是早期的latch: library cache等待。10g后很多latch用mutex代替。_kks_use_mutex_pin=false可以禁止mutex)
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

理想汽車L系列迎來新成員:理想L6定位中型五人座SUV 理想汽車L系列迎來新成員:理想L6定位中型五人座SUV Jul 02, 2023 pm 11:57 PM

6月30日消息,理想車旗下的L系列車型,包括L7、L8和L9,在各自的價格區間中取得了可觀的銷售成績。然而,據小編了解,理想汽車希望進一步提升銷量,焦點落在了另一款新車——理想L6的表現上。近日,一位部落客在高速服務區疑似拍到了理想L6的偽裝車。根據部落客所拍照片顯示,疑似理想L6的偽裝車並沒有正常行駛,而是停放在一輛拖車上。與旁邊的白色蔚來SUV相比,即使作為L系列中定位最低的車型,理想L6的體積也顯得相當龐大。據悉,理想L6被定位為一款中型五人座SUV。儘管這些照片未能提供太多有關外觀細節的信

PHP非同步發送郵件:避免長時間等待郵件發送完成。 PHP非同步發送郵件:避免長時間等待郵件發送完成。 Sep 19, 2023 am 09:10 AM

PHP非同步發送郵件:避免長時間等待郵件發送完成。導言:在Web開發中,發送郵件是常見的功能之一。但是,由於郵件發送需要與伺服器進行通信,往往會導致用戶在等待郵件發送完成的過程中出現長時間的等待。為了解決這個問題,我們可以使用PHP非同步發送郵件的方式來優化使用者體驗。本文將介紹如何透過具體的程式碼範例實現PHP非同步發送郵件,並避免長時間的等待。一、理解異步發送郵件

Go語言主函數會等待嗎?探究與解析 Go語言主函數會等待嗎?探究與解析 Mar 09, 2024 pm 10:51 PM

Go語言主函數會等待嗎?探究與解析在Go語言中,主函數是程式的入口,負責啟動程式的運作。許多初學者對於Go語言主函數是否會等待程式中的其他goroutine執行完畢而感到困惑。本文將深入探討這個問題,並透過具體的程式碼範例來解析。首先,要先明確的是,Go語言中的主函數並不會像一些其他程式語言中的主函數那樣會等待程式的其他部分執行完畢。主函數只是程式的起點,當主

深入理解Java中的wait和notify:執行緒同步機制解析 深入理解Java中的wait和notify:執行緒同步機制解析 Dec 20, 2023 am 08:44 AM

Java中的執行緒同步:解析wait和notify方法的工作原理在Java多執行緒程式設計中,執行緒之間的同步是一種非常重要的概念。在實際開發中,我們經常需要控制多個執行緒之間的執行順序和資源存取。為了實現執行緒的同步,Java提供了wait和notify方法。 wait和notify方法是Object類別中的兩個方法,它們使用了java中的監視器(monitor)機制來實現

盤點一些Linux實用小技巧 盤點一些Linux實用小技巧 Mar 12, 2024 pm 01:49 PM

Linux是一個強大的作業系統,有許多實用的指令​​和技巧可以幫助你更有效率地使用它。 1.查看檔案校驗值在檔案複製或傳輸過程中,可能會出現損壞或修改的情況,此時可以透過校驗值來進行驗證確認。通常,我們在工作中需要使用由其他團隊提供的一些介面程式。每當這些程式的運作結果與預期不符時,我們會比對雙方的md5校驗值以確認資料的一致性。產生檔案的校驗值的方法有很多種,常用的有md5sum校驗、crc校驗、sum校驗等。指令分別為:md5sumfile_namecksumfile_namesum演算法參數file

在C++中,將以下內容翻譯為中文:計算在L和R之間與P互質的數字數 在C++中,將以下內容翻譯為中文:計算在L和R之間與P互質的數字數 Aug 26, 2023 pm 09:33 PM

在電腦程式設計領域,找到給定範圍內與特定數字互質的數字數量可能是常見的任務。互質數,也稱為相對質數,是指除了1以外沒有其他公因數的數字。在本文中,我們將透過使用C++語言來探討在給定整數L和R之間找到與特定數字P互質的數字數。語法我們將首先概述我們在接下來的程式碼範例中將使用的方法的語法-intcountCoprimes(intL,intR,intP);演算法我們將使用的演算法來計算互質數的數量如下所示−將變數count初始化為0,用於儲存互質數的計數。從L開始迭代每個數字num,直到R。對於每個

究竟是買windows10系統還是等windows11系統 究竟是買windows10系統還是等windows11系統 Jul 09, 2023 pm 11:21 PM

微軟距離windows10時隔了六年推出windows11這個全新的系統,許多用戶都在期待這個新系統。但還是有用戶苦惱,不知道該買win10系統還是等win11系統,那就跟著小編一同去了接一下它們的差別吧,或許看完以後你心裡就已經有了答案。 1.開始選單:簡單的圖標,沒有動態磁貼Win11的「開始」選單與Win10的平鋪應用程式快捷方式(從Win8開始)相比,無疑是一個重大變化。預設情況下,「開始」功能表位於PC桌面的中心,與Win10X的「開始」功能表大致相同如果它曾經推出,就會表現得很好。在W

Go語言程式設計實踐:主函數的執行與等待 Go語言程式設計實踐:主函數的執行與等待 Mar 10, 2024 pm 02:33 PM

【標題】Go語言程式設計實踐:主函數的執行與等待Go語言作為一種並發程式語言,其主函數的執行與等待是一個非常重要的主題。在Go中,主函數通常是main函數,是程式的入口,負責啟動程式並執行相關邏輯。然而,在涉及並發程式設計時,主函數的執行方式和等待方式可能會有所不同。本文將透過具體的程式碼範例來探討主函數的執行與等待過程。主函數的執行在Go語言中,主函數的執行是透過

See all articles