1
成都創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁(yè)找三站合一網(wǎng)站制作公司,專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì),成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開(kāi)發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為成百上千家服務(wù),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶(hù)提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣服務(wù)!
自適應(yīng)游標(biāo)共享Adaptive Cursor Sharing或擴(kuò)展的游標(biāo)共享(Extended Cursor Sharing)是Oracle 11g的新特性之一,主要用于解決以前版由于綁定變量窺探導(dǎo)致SQL語(yǔ)句無(wú)法獲得最佳執(zhí)行計(jì)劃的缺陷,即能夠?qū)π实拖碌挠螛?biāo)(子游標(biāo))進(jìn)行自動(dòng)識(shí)別而選擇最佳的執(zhí)行計(jì)劃。
2 使用綁定變量執(zhí)行SQL語(yǔ)句并獲得首次執(zhí)行情況
3 自適應(yīng)游標(biāo)共享的外在體現(xiàn)
自適應(yīng)游標(biāo)共享主要通過(guò)三個(gè)字段來(lái)得以體現(xiàn),即is_bind_sensitive,is_bind_aware,is_shareable。(注:此三個(gè)字段僅在Oracle 11g
中存在)。通過(guò)上面從v$sql(v$sqlarea中不存在is_shareable)的查詢(xún)可知,三個(gè)字段分別被賦予了不同的值,代表了不同的含義。
is_bind_sensitive(綁定是否敏感)
表示該子游標(biāo)中是否使用了綁定變量要素,且采用bind peeking方法進(jìn)行執(zhí)行計(jì)劃生成。如果執(zhí)行計(jì)劃依賴(lài)于窺探到的值,此處為Y,
否則為N。
is_bind_aware(綁定是否可知)
表示該子游標(biāo)是否使用了extended cursor sharing技術(shù),是則為Y,否則為N,如為N,則該游標(biāo)將廢棄,不再可用。
is_shareable(是否可共享)
表示該子游標(biāo)可否被下次軟解析是否可共享使用??晒蚕韯t為Y,否則為N,表示該子游標(biāo)失去了共享價(jià)值,按LRU算法淘汰。
由于該SQL語(yǔ)句為首次執(zhí)行,因此從v$sql查詢(xún)的結(jié)果中得知
is_bind_sensitive 為Y值(首次運(yùn)行,執(zhí)行了bind peeking)
is_bind_aware 為N值(首次運(yùn)行,不被extended cursor sharing支持)
is_shareable 為Y值(執(zhí)行計(jì)劃可共享)
1、自適應(yīng)游標(biāo)共享在SQL語(yǔ)句首次執(zhí)行時(shí)(使用綁定變量),進(jìn)行窺探,并記錄窺探結(jié)果,如果后續(xù)有相同的的SQL語(yǔ)句執(zhí)行,則對(duì)窺探結(jié)果進(jìn)行比較以判斷是否需要生成新的執(zhí)行計(jì)劃。此即為綁定變量是否敏感。
2、綁定變量的可知性用于判斷當(dāng)前的游標(biāo)是否為可擴(kuò)展性游標(biāo)共享,當(dāng)不可知時(shí),則游標(biāo)被廢棄。
3、自適應(yīng)游標(biāo)共享的實(shí)質(zhì)是在Oracle 10g以前的基礎(chǔ)上實(shí)現(xiàn)了多次綁定變量窺探,增加了獲取最佳執(zhí)行計(jì)劃選擇的機(jī)率。
4、盡管使用自適應(yīng)游標(biāo)共享特性,但并不能保證每次執(zhí)行SQL語(yǔ)句一定按最佳計(jì)劃執(zhí)行。
5、自適應(yīng)游標(biāo)共享也不能保證兩次執(zhí)行相同SQL語(yǔ)句一定按相同的執(zhí)行計(jì)劃執(zhí)行,因?yàn)樽赃m應(yīng)游標(biāo)共享會(huì)不斷嘗試peeking。