射精一区欧美专区|国产精品66xx|亚洲视频一区导航|日韩欧美人妻精品中文|超碰婷婷xxnx|日韩无码综合激情|特级黄片一区二区|四虎日韩成人A√|久久精品内谢片|亚洲成a人无码电影

您現(xiàn)在的位置:首頁 > IT認(rèn)證 > oracle認(rèn)證 >

Oracle開發(fā)技術(shù):[Oracle]變量綁定


Oracle開發(fā)技術(shù):[Oracle]變量綁定

[Oracle]變量綁定

  Parent-Child cursor (父子游標(biāo))

  父游標(biāo):只要SQL語句文本相同,它們就對(duì)應(yīng)同一個(gè)parent cursor。

  子游標(biāo):在某些情況下,雖然SQL語句的文本相同,但是因?yàn)槠渌蛩夭煌?這些因素可以在視圖V$SQL_SHARED_CURSOR中查看),導(dǎo)致產(chǎn)生不同的child cursor。(重新生成child cursor,也就意味著一次硬解析)

  cursor_sharing

  對(duì)于是否使用綁定變量這個(gè)問題,最好是交給應(yīng)用程序決定,在數(shù)據(jù)庫(kù)層面是很難正確判斷。(這也是為什么cursor_sharing參數(shù)默認(rèn)值為exact)

  但是,有些時(shí)候,由于應(yīng)用程序沒有正確使用綁定變量,導(dǎo)致數(shù)據(jù)庫(kù)性能問題,又因?yàn)榇藭r(shí)系統(tǒng)已上線,要改應(yīng)用代碼有很多的阻力(大多都是人為的因素)。為此,Oracle提供了應(yīng)急(事后補(bǔ)救)方案,可以在數(shù)據(jù)庫(kù)級(jí)別強(qiáng)制使用綁定變量。

  當(dāng)cursor_sharing=force時(shí),對(duì)于只有謂詞條件不一樣的SQL語句,Oracle統(tǒng)統(tǒng)都認(rèn)為是一樣的。但是這樣會(huì)有一個(gè)問題,就是可能后續(xù)的執(zhí)行計(jì)劃不是最優(yōu)。為了解決這個(gè)問題,可以設(shè)置cursor_sharing=similar,這樣如果謂詞條件的變化可能生成不同的執(zhí)行計(jì)劃,Oracle都會(huì)進(jìn)行硬解析(生成child cursor)。

  但是,設(shè)置cursor_sharing=similar要非常小心,因?yàn)橛泻芏郻ug,需要經(jīng)過充分的測(cè)試才能在生產(chǎn)庫(kù)上修改。

  Bind Peeking (變量窺視)

  從Oracle9i開始,Oracle在第一次解析SQL(hard parse)時(shí),如果SQL上有變量綁定,會(huì)查看這個(gè)變量的值,以便于更準(zhǔn)確的指定執(zhí)行計(jì)劃;但在后續(xù)的分析中(soft parse),將不會(huì)理會(huì)這個(gè)變量的值。

  適用場(chǎng)景

  執(zhí)行計(jì)劃幾乎不改變(oltp)

  大量的并發(fā)

  大量的除謂詞外幾乎相同的SQL。

  不適用場(chǎng)景

  執(zhí)行計(jì)劃會(huì)隨變量值的變化而改變。

  少量的SQL(OLAP).

  ACS (Adaptive Cursor Sharing)

  Oracle11g用于解決變量綁定帶來的負(fù)面影響,通過不斷觀察bind的值,來決定新的SQL是否重用之前的執(zhí)行計(jì)劃,解決綁定變量導(dǎo)致后續(xù)執(zhí)行計(jì)劃不變的問題。

  缺點(diǎn)

  更多的硬分析

  產(chǎn)生更多的子游標(biāo),需要更多的內(nèi)存。

  消耗更多的CPU

  綁定變量的適用場(chǎng)景

  適用于OLTP

  用戶并發(fā)很高

  表中有主鍵

  操作的數(shù)據(jù)少

  執(zhí)行計(jì)劃穩(wěn)定

  SQL的重復(fù)率高

  不適用于OLAP

  執(zhí)行計(jì)劃多變

  并發(fā)用戶少

  SQL解析對(duì)系統(tǒng)性能影響小

相關(guān)文章

無相關(guān)信息
更新時(shí)間2022-03-13 11:18:58【至頂部↑】
聯(lián)系我們 | 郵件: | 客服熱線電話:4008816886(QQ同號(hào)) | 

付款方式留言簿投訴中心網(wǎng)站糾錯(cuò)二維碼手機(jī)版

客服電話: