闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻锝呂熼懡銈呯仼闂佹悶鍎崝搴ㄥ储闁秵鐓熼煫鍥ㄦ礀娴犳粌顭胯缁瑩骞冮敓鐙€鏁嶆慨妯垮亹閸炵敻鏌i悢鍝ユ噧閻庢凹鍘剧划鍫ュ焵椤掑嫭鈷戦悗鍦濞兼劙鏌涢妸銉﹀仴闁靛棔绀侀埢搴ㄥ箣閻樼绱查梻浣筋潐閸庤櫕鏅舵惔锝囩幓婵°倕鎳忛埛鎺懨归敐鍛暈闁哥喓鍋為妵鍕敇閻愭惌妫﹂悗瑙勬礃閿曘垽寮幇鏉垮耿婵炲棗鑻禍鐐箾瀹割喕绨奸柛濠傜仛椤ㄣ儵鎮欓懠顑胯檸闂佸憡姊圭喊宥囨崲濞戙垺鍤戞い鎺嗗亾闁宠鐗忛埀顒冾潐濞叉﹢宕归崸妤冨祦婵せ鍋撻柟铏矒濡啫鈽夊▎鎴斿亾椤撱垺鈷掑ù锝呮啞閸熺偞绻涚拠褏鐣电€规洘绮岄埥澶愬煑閸濆嫭鍠樻い銏★耿閹垽鎼归崷顓燁潓闂傚倷绀侀崯鍧楁儍濠靛纾婚柟鍓х帛閻撴洟鏌¢崶鈺佷户濞寸姵鐩弻锝夊Χ閸曨収妲柧缁樼墵閺岋絽顫滈埀顒€岣胯缁傛帒饪伴崟顏嗙畾濡炪倖鍔х徊璺ㄧ不閹炬番浜滈柡鍥朵簽缁夘喗銇勯姀鈥冲摵闁糕斁鍋撳銈嗗坊閸嬫捇鏌i敐鍥у幋闁诡喒鍓濋幆鏃堫敊閹勬毄濠碉紕鍋戦崐鏇犳崲鐎n喗鍊块柨鏇楀亾闁宠绉电换婵嬪炊閵娧冨箥婵$偑鍊栧濠氭偤閺傚簱鏋旀繝濠傜墛閻撴稑霉閿濆洦鍤€濠殿喖鐗撻弻鐔碱敍濞戞瑧鍙嗛梺瀹狀潐閸ㄥ灝鐣烽悡搴樻斀闁糕剝岣垮Σ妤呮⒒閸屾瑦绁版い鏇嗗厾褰掓倻閽樺鐤囬梺瑙勫礃椤曆呯不閻斿吋鐓ユ繛鎴灻顏嗏偓瑙勬礃閻擄繝寮诲☉銏犲嵆闁靛ǹ鍎辩粻鍝勵渻閵堝骸浜濇繛鑼枛瀵鎮㈤崗鐓庘偓缁樹繆椤栨繍鍤欓梻澶婄Ф缁辨捇宕掑姣欍垺绻涘顔煎籍鐎殿喖顭峰鎾偄閾忚鍟庨梻浣稿閻撳牓宕伴弽銊﹀弿闁靛繈鍊栭埛鎴︽煠婵劕鈧洟寮搁崒鐐寸厱闁哄倽娉曢悞鎼佹煃閵夛附顥堢€规洘锕㈤、娆撳床婢诡垰娲ょ粻鍦磼椤旂厧甯ㄩ柛瀣崌閹崇娀顢楅埀顒勫吹椤掑倻纾介柛灞捐壘閳ь剟顥撳▎銏ゆ晸閻樿尙鐛ュ┑掳鍊曢幊搴g不娴煎瓨鐓欓梻鍌氼嚟閸斿秹鏌涚€Q勬珚闁哄矉缍侀獮瀣晲閸♀晜顥夌紓浣鸿檸閸樻悂宕戦幘缁樷拻濞达綀娅g敮娑㈡煕閺冣偓濞叉粎鍒掗弮鍫濋唶闁哄洨鍋熼悰銉╂⒑閸濆嫮鈻夐柛妯垮亹缁寮介妸褏顔曢梺绯曞墲钃遍悘蹇e幘缁辨帡鎮崨顖溕戠紓浣虹帛缁诲牆螞閸愩劉妲堟繛鍡樺姈閸婇攱淇婇悙顏勨偓褔鎳欒ぐ鎺戠柧闁绘ê妯婂ḿ鏍ㄧ箾瀹割喕绨荤紒鐙€鍣i弻銈夊箒閹烘垵濮曢梺鍝勬婵炩偓婵﹥妞介獮鏍倷閹绘帩鐎虫繝鐢靛Л閸嬫捇鏌涘Δ鍐ㄢ偓锝夋晲婢跺﹦鐤€闂佸搫顦冲▔鏇㈩敊閹烘鐓熼幖娣灮閳洟鏌ㄥ顓滀簻閹兼番鍨虹亸鎵磼缂佹ḿ绠撻柍缁樻崌瀹曞綊顢欓悾灞兼喚闂傚倷鑳剁涵鍫曞疾濞戙垺鍋嬪┑鐘插閻鈧箍鍎遍幊澶愬绩娴犲鍊甸柨婵嗙凹缁ㄤ粙鏌i妶鍛伃婵﹥妞藉Λ鍐归妷銉уⅵ鐎殿喗褰冮埥澶愬閳ユ枼鍋撳畡鎵虫斀闁绘ê寮舵径鍕煟閹惧磭绠伴柍瑙勫灴閹瑩鎳犻鑳闂備線鈧偛鑻晶顖涖亜閵娿儳澧㈤柛鎺撳笧閹风姴顔忛钘夊厞婵$偑鍊栫敮鎺椝囬幍顔瑰亾闂堟稓鐒告慨濠冩そ濡啫鈽夊顒夋毇婵犵妲呴崑鍛矙閹烘鐤鹃柛顐f处閺佸棝鏌涢弴銊ュ闁告ü绮欏娲传閸曨偅娈查梺鎼炲妼閻忔岸寮查崼鏇炵妞ゆ梻鏅崢浠嬫⒑閻熸壆浠㈤柛鐕佸亝閺呭墎鈧稒菧娴滄粓鏌曡箛濠冾潑婵炲牊绮庨埀顒冾潐濞叉ḿ鏁幒鏇犱簷闂備線鈧偛鑻晶顖滅磼閸屾氨校闁靛牞缍佸畷姗€鍩℃担椋庢暰濠电姷鏁搁崑娑樜涘Δ鍐╁床闁逛即鍋婇弫鍌涖亜韫囨挻顥犳俊顐灦閺岋綁骞囬棃娑橆潽闂佺ǹ锕ラ崝娆撳蓟閿涘嫪娌柛鎾椻偓婵洭姊虹拠鈥崇仭婵☆偄鍟村顐﹀箛閺夊灝鑰垮┑鈽嗗灥瀹曢潧危濡ゅ懏鈷戦悹鍥ㄥ絻椤掋垺銇勯弮鈧悧鐘茬暦閹剁瓔鏁嬮柍褜鍓欓悾鐑藉箣閻愮數鐦堥梺鎼炲劗閺呮稓绮婇敃鈧埞鎴﹀煡閸℃浠撮梺绋款儐閸旀绔熼弴銏犵闂傚倸顕粻姘渻閵堝棛澧紒顔兼捣閺侇喖鈽夊▎宥勭盎闂婎偄娲﹀ú鏍几濞戞瑦鍙忓┑鐘插鐢盯鏌熷畡鐗堝殗闁瑰磭鍋ゆ俊鐤槹闁逞屽墮閿曨亜顫忓ú顏咁棃闁冲搫鍟拌倴缂傚倷鑳舵慨鐢稿箲閸ヮ剚鍋樻い鏃囨硶閻も偓濠电偞鍨堕悷锕€鈻嶉姀銈嗏拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚敐澶婄闁挎繂妫Λ鍕⒑閸濆嫷鍎庣紒鑸靛哺瀵鈽夊Ο閿嬵潔濠殿喗顨呴悧濠囧极妤e啯鈷戦柛娑橈功閹冲啰绱掔紒姗堣€跨€殿喖顭烽弫鎰緞婵犲嫷鍚呴梻浣瑰缁诲倸螞椤撶倣娑㈠礋椤栨稈鎷洪梺鍛婄箓鐎氱兘宕曟惔锝囩<闁兼悂娼ч崫铏光偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備胶绮崝锕傚礈濞嗘挸绀夐柕鍫濇娴滄粍銇勯幘璺盒㈤柛妯侯嚟閳ь剚顔栭崰鏍€﹂悜钘夋瀬闁归偊鍘肩欢鐐测攽閻樻彃顏柡澶婃啞娣囧﹪鎮欓鍕ㄥ亾閺嶎偅鏆滃┑鐘叉处閸婂潡鏌ㄩ弴鐐测偓鍝ュ閸ф鐓欓柟顖嗗喚鏆㈢紒鐐礃濡嫰婀侀梺鎸庣箓閹冲繘骞嗛崼顫剨闊洦绋掗埛鎴︽煕濞戞ǚ鐪嬫繛鍫熸礀閳规垿鎮欑拠褍浼愬銈嗘穿缁插墽鎹㈠┑鍡╂僵妞ゆ挾鍋樼花濠氭⒒娴e懙鍦崲閹扮増鍎嶉柣鎴f缁狀垰鈹戦悩宕囶暡闁绘挾鍠栭獮鏍庨鈧俊鑺ョ箾閹冲嘲鍠氶悢鍡涙煟閻斿嘲绨荤€规悶鍎靛畷鈩冩綇閵婏絼绨婚梺鍝勫€搁悘婵嬪煕閺冨倻妫柟瑙勫姈椤ュ妫佹径鎰叆婵犻潧妫欓崳娲煙椤栨氨澧︾€规洦鍨堕獮鏍ㄦ媴閸忓瀚奸梻浣告啞缁哄潡宕曟潏銊уⅰ闂傚倷鑳剁划顖炪€冮崼鐔稿弿闁圭虎鍣弫瀣煥濠靛棙顥犵紒鈾€鍋撴繝娈垮枟閿曗晠宕曢悽绋跨厸闁告侗鍠氶崢鎾绘⒑閸涘﹦绠撻悗姘煎墴閸┾偓妞ゆ巻鍋撻柟璇х磿缁顓奸崨顏勭墯闂佸壊鍋嗛崯鍧楀箯濞差亝鈷戦柛娑橈功閳藉鏌ㄩ弴顏勵洭缂侇喖顭烽獮妯肩磼濡 鍋撻崹顐e弿婵妫楁晶顖炴煕閵堝懏鎼愰柍瑙勫灴椤㈡瑩鎮锋0浣割棜闂傚倸鍊风欢姘缚瑜旈幃褔宕卞銏$☉閳藉濮€閻樻彃浜堕梻鍌欑贰閸撴瑧绮旈悽绋跨厱闁硅揪闄勯埛鎺楁煕椤愩倕鏋欓柛搴㈠姉閹叉悂鎮ч崼婵堢懆缂佺偓鍎冲ḿ鈥愁潖濞差亶鏁嗛柍褜鍓涚划鏃堝箻椤旇棄鈧潡鏌涢…鎴濅簴濞存粍绮撻弻鐔煎传閸曨剦妫炴繛瀛樼矋閸庢娊鍩為幋锔藉亹妞ゆ劦婢€婢规洟姊婚崒娆戣窗闁告挻鐟х划鏃傗偓闈涙憸娑撳秹鏌$仦璇插姕闁绘挸绻橀悡顐﹀炊閵婏妇顦ラ悶姘ュ劚閳规垿鍩勯崘銊хシ闂佺粯顨嗛幑鍥ь嚕婵犳艾鍗抽柨娑樺閺夋悂姊洪崫鍕窛闁稿⿴鍋婃慨鈧柕鍫濇閸橀箖姊洪崫鍕垫Ъ婵炲娲樼粋鎺楀閵堝棛鍘撻柣鐔哥懃鐎氼剟鎮橀幘顔界厱闁崇懓鐏濋崝锔锯偓瑙勬礀瀹曨剝鐏冮梺鍛婂壃閸曨兘鏋欏┑鐘殿暜缁辨洟宕戦幋锕€纾归柡宓偓閺嬫牠鏌ㄩ弴鐐测偓鎼佹倷婵犲啨浜滄い鎾跺枎閻忥附銇勯妷銉█闁哄矉绲鹃幆鏃堟晬閸曨厽娈梻浣呵归柊锝嗙閹増顥ゅ┑鐐存綑閸氬岣垮▎鎾村亗闁哄洢鍨洪悡娆撴倵閻㈢櫥鐟版毄缂備胶鍋撻崕鎶藉Χ閹间礁绠栨俊銈呮噺閺呮煡骞栫划鍏夊亾閼艰泛鐒婚梻鍌欒兌鏋紒銊︽そ瀹曟洟鎮界粙鑳憰濠电偞鍨堕悷锕傚磿閻斿吋鐓忛煫鍥ㄦ礀瀛濆銈庡亜濞撮妲愰幘瀛樺濞寸姴顑呴幗鐢告煟閵忊晛鐏i柛瀣ㄥ€濋悰顔跨疀濞戞瑥浜归柣鐘叉穿鐏忔瑩顢欏畝鍕拺闁革富鍘奸崝瀣煙缁嬫鐓兼い銏$懇楠炴帡骞嬮弮鈧弬鈧梻浣虹帛钃辨い鏃€鐗犲鍐测堪閸涱垳锛滈柡澶婄墑閸斿秶绮堢€n兘鍋撳▓鍨珮闁稿妫濋獮蹇涙偐缂佹ê娈ゅ銈嗗笂閻掞箓顢欓弴銏♀拻濞达綀娅g敮娑欐叏婵犲偆鐓奸柛鈺傜洴瀹曞ジ濡烽妷锔锯偓顒勬倵楠炲灝鍔氭俊顐g懇瀹曪綀绠涢弬鍓х畾濡炪倖鐗楅崫搴㈢閹烘鐓曟慨妯煎帶娴滀即鏌$仦绋垮⒉鐎垫澘瀚埀顒婄秵閸嬪嫰鍩€椤掍礁濮堥柟渚垮妽缁绘繈宕熼鐐殿偧闂備胶鎳撻崲鏌ュ箠濡櫣鏆︽い鎰剁畱鍞梺鎸庢閺侇噣宕戦幘娲绘晩閻忓繑鐗楅弬鈧梻浣规灱閺呮盯宕妸锔绢浄闁绘ḿ绮悡鏇㈡煛閸屾碍鍋ラ柛娆忓椤ㄣ儵鎮欓懠顒傤唺闂侀€炲苯澧剧紓宥呮瀹曚即寮介鐔风彅闂佺粯鏌ㄩ崥瀣偂韫囨搩鐔嗛悹楦挎婢ф洟鏌涢弬璇测偓婵嬪蓟閵娿儮妲堟繛鍡樺灦閸掓稑鈹戦纭烽練婵炲拑缍侀獮澶愬箻椤旇偐顦板銈嗗姂閸娿倕危閻楀牅绻嗛柣鎰典簻閳ь剚鐗曢埢鏃堟晝閸屾氨鍊為悷婊冪箻钘濋柕濞炬櫆閳锋垿姊洪銈呬粶闁兼椿鍨遍弲鍫曞箻椤旂晫鍘靛銈嗘⒒閸樠兾g紒姗嗘妞ゅ繐鍟畵鍡欌偓瑙勬礃閿曘垽骞冨▎鎿冩晞闁兼亽鍎抽埀顑垮嵆濮婅櫣鎷犻幓鎺濆妷濡炪倖姊归悧鐘茬暦閺夎鏃堝川椤撶姷鏆梻浣呵归張顒勫礄瑜版帒鍚归柡鍥╁枂娴滄粓鏌¢崶顭戞當濞存粓绠栭幃妤冩喆閸曨剛顦ラ梺闈涚墛閹倿鐛崘顔碱潊闁靛牆鎳嶇槐鍫曟⒑閸涘﹥澶勯柛瀣噺濞煎繘宕奸妷锔规嫽闂佺ǹ鏈懝楣冨焵椤掑倸鍘撮柟铏殜瀹曟粍鎷呯粙璺ㄤ喊婵$偑鍊栭悧妤咁敋閵忕妴娲敂閸曨偄鏁ゆ俊鐐€栭幐楣冨磻閻斿吋鏅繛鍡樻尰閳锋垿姊婚崼姘珔闁伙附绮撻弻娑樜熺紒妯衡偓鎰偓瑙勬礃閸ㄥ潡鐛鈧獮鍥ㄦ媴閻熸澘鍘為梻鍌欒兌缁垶宕濋敃鍌氱婵炲棙鎼╅弫鍌炴煥閻曞倹瀚�
开发学院数据库Oracle Oracle Database 11g:SQL查询结果集缓存 阅读

Oracle Database 11g:SQL查询结果集缓存

 2008-08-23 12:42:28 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙稑鈹戦悙鏉戠亶闁瑰磭鍋ゅ畷鍫曨敆娴i晲缂撶紓鍌欑椤戝棛鈧瑳鍥ㄥ€垫い鎺戝閳锋垿鏌i悢鍛婄凡闁抽攱姊荤槐鎺楊敋閸涱厾浠搁悗瑙勬礃閸ㄥ潡鐛崶顒佸亱闁割偁鍨归獮宥囩磽閸屾艾鈧兘鎮為敃鍌涙櫔缂傚倷鐒﹂妵鍡涘炊閵娧冨笚闁荤喐绮嶇划鎾崇暦濠婂牊鏅濋柛灞炬皑閻撴垿姊洪崨濠傚Е闁绘挸鐗嗗玻鍧楀冀椤撶喓鍘卞┑鐘绘涧濡鎮甸弮鍌涘枑闁哄倽娉曢弳锕傛煙椤栫偛浜版俊鑼亾缁绘稓鈧數枪瀛濋梺闈涚墢鏋い顐㈢箻閹煎湱鎲撮崟顐ゅ酱闂備浇鍋愰埛鍫ュ礈濞戙埄鏁婂鑸靛姈閳锋垿鏌i幘铏崳缂佸娅g槐鎺楁偐瀹曞洤鈷屽Δ鐘靛仜閸燁垶濡堕敐澶婄闁宠桨璁查崑鎾寸節濮橆厾鍙冨┑鈽嗗灟鐠€锕€危婵傚憡鐓欓柤鎭掑劜缁€瀣叏婵犲啯銇濇俊顐㈠暙閳藉娼忛…鎴斿亾閸℃ḿ绡€缁剧増菤閸嬫捇鎼归銏$亷闁诲氦顫夊ú蹇涘垂娴犲绠栧ù鐘差儏瀹告繂鈹戦悙闈涗壕閻庢艾銈稿娲嚒閵堝懏鐎鹃梺鑽ゅ枂閸庢娊鍩€椤掍焦鐨戦柛蹇斆悾鐑筋敍濠靛牏鏉稿┑鐐村灦閻熝囧储闁秵鈷戠紓浣光棨椤忓棗顥氭い鎾跺枑濞呯娀鏌i姀鐘冲暈闁绘挸绻橀弻娑㈠焺閸愮偓鐣堕梺閫炲苯澧繝鈧潏鈺冪=闁规儳顕々鐑芥倵閿濆簼绨荤紒鎰⊕缁绘繈鎮介棃娴躲垽鎮楀鐓庡⒋闁绘侗鍣e畷濂稿Ψ閿旇瀚肩紓浣鸿檸閸樺ジ骞婃惔銊嬪顓兼径瀣幍濠电偠灏濠勮姳閼恒儰绻嗛柛娆忣槸婵秶鈧鍠楅幐鎶藉箖閵忋倕浼犻柛鏇樺妼瑜板繘姊婚崒姘偓鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸パ冪柧闂傚倷绶氬ḿ褔鎮ч崱妞曟椽鎮╃拠鑼紱闂佸湱鍋撻崜姘缚閳哄倶浜滈柟鎵虫櫅閻忊晝绱掓笟鍥ф珝婵﹨娅g槐鎺懳熼崷顓犵畳闂備線娼荤紞鍥╃礊娓氣偓閹即顢氶埀顒勭嵁閹烘绠犻柧蹇e亝椤ュ牓鏌涢埞鎯т壕婵$偑鍊栫敮鎺楀磹缂佹ḿ鈻旂€广儱顦伴悡銉︾節闂堟稒顥炴い銉уХ缁辨帡鍩﹂埀顒勫磻閹剧粯鈷掗柛灞捐壘閳ь剚鎮傞幃褎绻濋崟顓犵厯闂佺鎻粻鎴澬ч崣澶岀闁糕剝顨堢拹鈺呮煟閻旂ǹ顥愰柛顐邯閺屾盯顢曢悩鑼紕闂佸搫妫崑濠傤潖濞差亜浼犻柛鏇ㄥ幘閸斿湱绱撻崒姘毙¢柣鎺炵畵楠炲牓濡搁埡浣哄姦濡炪倖甯掔€氼參鎮¢崘顔界厵妞ゆ牗绮岄。鑲╃棯椤撶姴浜剧紒缁樼箞閸┾偓妞ゆ帊鐒︾紞鍥煏婵炑冩噹妤犲嫰姊绘担鍛婃儓婵炲眰鍔戝畷浼村箻鐠哄搫袣闂侀€炲苯澧柍瑙勫灴椤㈡瑩寮妶鍕繑闂備礁鎲¢敃銏㈢不閺嵮呮殾闁靛繈鍊栭崑銊╂煕濞戞☉鍫ュ箯閾忓湱纾介柛灞剧懅閸斿秹鏌ㄥ顑芥斀妞ゆ洖妫涢悾鐢告煛鐏炲墽娲存鐐达耿瀵爼骞嬪┑鍥ㄥ殘闂傚倷娴囬鏍窗濡ゅ嫭鎳屾繝鐢靛仧閸樠呮崲濡绻嗛柟闂寸鍥撮梺鎼炲劗閺呮繈寮虫导瀛樷拻闁稿本鐟чˇ锔界節閳ь剚娼忛埡浣哥亰濡炪倖鐗楃划宥夊汲濠婂牊鐓熼柟閭﹀墰閹界姵绻涢崨顖毿g紒缁樼洴楠炲鎮欑€靛憡顓荤紓浣哄亾瀹曟﹢宕戦幇顔筋潟闁规儳鐡ㄦ刊鎾偣閹伴潧鐏g紒杈ㄦ緲閳规垿鎮欓弶鎴犵シ濡炪倖娲﹂崣鍐春閳ь剚銇勯幒鎴濇灓婵炲吋鍔栫换娑㈠矗婢跺苯鈪归梺浼欑悼閸忔﹢銆佸Δ鍛妞ゅ繐鍟伴懗娲⒒閸屾艾鈧绮堟笟鈧獮澶愭晸閻樿尙顦梺鍝勬储閸ㄥ綊鎮块鈧弻锝呂熷▎鎯ф缂備讲鍋撻柛顐ゅ枔缁♀偓闂傚倸鐗婄粙鎾存櫠濞戞埃鍋撶憴鍕鐎殿喖澧庨幑銏犫槈閵忕姷顓洪梺缁樺姂閸斿海妲愭导瀛樷拺闁告繂瀚ˉ婊勪繆椤愶綆娈滈柛鈺冨仱楠炲鏁傞挊澶夋睏闂佸搫顦悧婊堝磻閸曨垰鍌ㄩ柨鐔哄У閳锋垿寮堕悙鏉戭棆闁告柨绉归弻锝呂旀担铏圭厒濠碘€冲级閸旀瑩鐛Ο灏栧亾濞戞顏堫敁閹惧绠鹃悗鐢登瑰瓭濡炪倖鍨甸幊姗€鐛Δ鍛仺闁告稑艌閹锋椽姊洪棃鈺佺槣闁告ü绮欏畷鐢稿焵椤掆偓閳规垿鎮欓懠顒佸嬀闂佺ǹ锕ョ换鍫ョ嵁閸愨斂鍋呴柛鎰ㄦ櫅閳ь剙顭烽弻锕€螣娓氼垱楔濡炪倖鏌ㄩ敃顏勵潖閾忚鍠嗛柛鏇ㄥ墮閸撳綊姊洪崨濞掕偐鍒掑▎蹇曟殾闁瑰墽绮崑銊╂煕濞戞☉鍫ュ箯濞差亝鈷戦柤濮愬€曢弸鎴炵節閵忊槄鑰挎鐐插暞缁楃喖鍩€椤掑嫬钃熼柨婵嗩槸缁犳娊鏌i幇顔芥毄闁哄棎鍊濆铏规嫚閳ヨ櫕鐏嶅銈冨妼閿曨亪鎮伴鈧浠嬪Ω閿曗偓椤庢捇姊虹粙璺ㄧ妞わ附澹嗛埀顒佷亢濡嫰鍩為幋锔藉€烽柤鎼佹涧濞懷呯磽娴g懓绲绘繛灏栤偓宕囨殾闁哄洢鍨瑰洿婵犮垼娉涢敃銈夊箚閻愮儤鈷戦梺顐ゅ仜閼活垱鏅剁€涙ɑ鍙忓┑鐘插暞閵囨繃顨ラ悙瀵稿⒌闁诡喗鐟ラ湁閻庯綆浜欐竟鏇㈡⒑閸濆嫮鈻夐柛妯圭矙瀹曟垹鈧綆鍠楅悡鐔镐繆椤栨氨浠㈤柛姘贡閳ь剝顫夐幐椋庢濮樿埖鍋傛い鎰剁畱閻愬﹪鏌曟繛褉鍋撳┑顔兼喘濮婃椽宕崟顒€娅ら梺璇″枛閸婂灝顕f繝姘╅柍鍝勫€告禍鐐烘⒑缁嬫寧婀扮紒瀣灴椤㈡棃鏁撻敓锟�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喛顕ч埥澶娢熼柨瀣垫綌婵犳鍠楅〃鍛存偋婵犲洤鏋佸Δ锝呭暞閳锋垿鏌涘☉姗堝姛闁瑰啿鍟扮槐鎺旂磼濡櫣浼屾繝纰夌磿閺佽鐣烽悢纰辨晬婵﹢纭搁崯瀣⒒娴e憡鍟炴い銊ョ墦瀹曟垿鎮㈤崫銉祫闂佸吋绁撮弲婵堝閽樺褰掓晲閸涱喗鍎撳銈呴閻倿寮诲☉銏犖╅柕澹啰鍘介柣搴㈩問閸犳盯顢氳閸┿儲寰勯幇顒夋綂闂佺粯岣块弫鎼佸级閹间焦鈷掗柛灞捐壘閳ь剚鎮傞幃褎绻濋崟顓犵厯闂佸湱鍎ら〃鍡涘磹閸洘鐓曟い鎰Т閸旀粓鏌涙繝鍕毈闁哄矉缍侀幃銏ゅ传閸曞灚姣夐梻浣告憸閸犳捇宕戦悢鐑橆潟闁圭儤姊圭€氭岸鏌熺紒妯虹瑲婵炲牏绮换婵堝枈婢跺瞼锛熼梺杞版祰椤曆囨偩閻戣姤鍋勭痪鎷岄哺閺咁剙鈹戦鏂よ€跨痪顓熸倐瀹曨垳鈧綆鍠楅埛鎴︽偣閸ャ劎鍙€闁告瑥瀚换娑欐媴閸愬弶鎼愮紒鐘靛劋缁绘繃绻濋崒婊冾杸闂佺ǹ顑傞弲娑㈠煘閹达箑纾兼慨姗嗗幖閺嗗牓姊洪幎鑺ユ暠闁搞劌缍婇幆鈧い蹇撶墱閺佸洭鏌i幇顓熺稇妞ゅ孩绋戦埞鎴︽倷閹绘帗鍊梺鍛婃⒐閻楁粓骞戦姀鐘闁靛繆鈧櫕顓绘俊鐐€栧濠氬磻閹剧粯鐓涢悗锝庝簻椤掋垽鏌曢崶褍顏い銏℃礋婵偓闁靛繈鍩勯崬铏圭磽閸屾瑦绁板鏉戞憸閺侇噣骞掗弴鐘辫埅闂傚倷绀侀崥瀣矈閹绢喖鐤炬繝濠傜墕閸氬湱鈧厜鍋撻柛鏇ㄥ厴閹风粯绻涢幘鏉戠劰闁稿鎹囬弻宥堫檨闁告挻鐩畷鎴濃槈閵忊€虫濡炪倖鐗楃粙鎺戔枍閻樼偨浜滈柡鍐ㄦ搐娴滃綊鏌¢崱妤侇棦闁哄被鍔岄埞鎴﹀幢濞嗗浚鏆梻浣告啞閺屻劑鎮樺璺何﹂柛鏇ㄥ灡閺呮粓鏌i敐鍛板鐎殿喓鍔戝铏规嫚閳ヨ櫕鐝紓浣虹帛缁诲啯绌辨繝鍥ㄥ殝闂傚牊绋撶粣鐐烘煟鎼搭垳绉甸柛鎾寸懅閺侇喗銈i崘鈹炬嫽婵炶揪绲挎灙妞ゃ儱绻橀弻娑氣偓锝庝簼閸d粙鏌熼獮鍨伈鐎规洘锕㈤、娆撴嚃閳哄骞㈠┑锛勫亼閸婃洜鎹㈤幇鏉跨疇闁归偊鍠氭稉宥夋煕閹炬せ鍋撻柛瀣崌閹兘寮跺▎鐐棏闂備礁鎽滄慨闈浢哄⿰鍫熷殟閺夊牄鍔庣弧鈧┑顔斤供閸撴盯鎮炬ィ鍐┾拺缂備焦蓱閻撱儵鏌涘顒夊剶闁糕晜鐩獮瀣晜閽樺鍋撻悽鍛婄厱闁挎棁顕ч獮鏍冀閿熺姵鈷戦梻鍫熺⊕椤ユ粓鏌涢悢鍛婂唉鐎殿喖顭锋俊鑸靛緞婵犲嫷妲伴梻浣藉亹閳峰牓宕滃▎鎾村亗闁绘柨鍚嬮崐鐢告偡濞嗗繐顏紒鈧崘顏嗙<閻犲洩灏欐晶锔锯偓娈垮櫘閸嬪﹤鐣峰鈧、娆撴嚃閳轰礁袝濠碉紕鍋戦崐鏍暜閹烘柡鍋撳鈧崶褏鍔﹀銈嗗笂閻掞箓藟閸懇鍋撶憴鍕闁挎洏鍨介妴浣糕枎閹惧啿绨ユ繝銏n嚃閸ㄦ澘煤閿曞倹鍋傞柡鍥ュ灪閻撳啴鏌嶆潪鎵槮闁哄鍊栫换娑㈠醇閻曞倽鈧潡鏌″畝瀣М闁诡喓鍨荤划娆撳垂椤曞懏缍掑┑鐘愁問閸犳牠鏁冮妷銉富濞寸姴顑呯粻鏍煃閳轰礁鏆為柛搴e枛閺屽秹鍩℃担鍛婃闂佷紮璁g紞浣割潖缂佹ɑ濯撮柧蹇曟嚀缁楋繝姊虹紒姗嗘畷婵炶尙鍠愭穱濠囧礈娴h櫣鐓撻柣鐘充航閸斿秴鈻撴ィ鍐┾拺缂備焦锚閻忥箑鐣濋敐鍫熺《鐎殿啫鍥х劦妞ゆ帒瀚埛鎴︽煙閼测晛浠滈柛鏂哄亾闂備礁鎲¢崝鎴﹀礉鎼淬劌围妞ゆ洍鍋撴慨濠傤煼瀹曟帒鈻庨幋鐘靛床婵犵數鍋橀崠鐘诲礋閸偒鍟嶉梻濠庡亜濞诧箑煤濮椻偓閿濈偤寮撮姀锛勫幐闂佹悶鍎崕閬嶆倶閳哄懏鐓曢悘鐐额嚙婵′粙鏌曢崶褍顏紒鐘崇洴楠炴ḿ鎹勬笟顖涙緫闂傚倷鐒︽繛濠囧绩闁秴鍨傞柛褎顨呴拑鐔兼煟閺傚灝鎮戦柛銈呭暣閺屽秵娼悧鍫▊缂備緡鍠栭悥鐓庮潖濞差亜宸濆┑鐘插暊閹风懓顪冮妶鍐ㄥ闁挎洦浜滈锝嗙節濮橆厽娅㈤梺缁樕戣ぐ鍐玻濞戞﹩娓婚柕鍫濇椤ュ牓鏌℃笟鍥ф灍闁逛究鍔戝畷鍫曞煛閸愵亷绱冲┑鐐舵彧缁叉寧鐏欓梺閫炲苯澧繝鈧柆宥呮瀬妞ゆ洍鍋撻柟顔哄灪娣囧﹪骞橀搹顐㈢獩闂侀€炲苯澧存繛浣冲洤绠烘繝濠傛噹椤ユ艾鈹戦崒婧撳湱鐥閺屾盯顢曢敐鍥f婵犲痉銈呬汗缂佽鲸甯掕灃濞达絼璀﹂弳锛勭磽娴h櫣甯涢柣鈺婂灦楠炲啴鍩勯崘鈺佸妳闂佹寧绻傚ù鍌炲疮鐎n喗鈷掑ù锝堟閵嗗﹪鏌¢崒娆戠獢鐎规洘绮岄埞鎴犫偓锝庝簽椤斿棝姊洪崨濠勨槈闁宦板姂閹繝濡烽埡鍌氣偓鐢告煥濠靛棙鍣藉ù鐘崇〒缁辨挸顓奸崱鈺傜杹濠殿喖锕ら…宄扮暦閹烘埈娼╂い鎴f娴滃墽鈧懓瀚崳纾嬨亹閹烘垹鍊為悷婊勭矊闇夐柡宥庡幗閻撳繐鈹戦悙闈涗壕婵炲懎妫濋弻娑欑節閸屾稑浠撮梺鍝勮閸旀垵顕i幘顔藉€锋繛鏉戭儏娴滈箖鏌涘┑鍕姢濞戞挸绉归弻锛勪沪鐠囨彃濮曢梺缁樻尰濞茬喖寮婚弴鐔风窞婵☆垳鍎ら悘鍫熺節閳封偓鐏炶姤鐝濋梺鍝勭焿缁辨洟鍩€椤掑﹦宀涢柡鍛箘缁綁寮崼鐔哄幐閻庡厜鍋撻柍褜鍓熷畷浼村冀瑜忛弳锔界節婵犲倹锛嶆俊鏌ョ畺閺岋綁濮€閳轰胶浠梺鐑╂櫓閸ㄨ泛顕f繝姘櫢闁绘ɑ褰冪粣娑橆渻閵堝棙顥嗘俊顐㈠閸┾偓妞ゆ帊绀佹慨宥夋煛瀹€瀣?濞寸媴濡囬幏鐘诲箵閹烘繃缍嗛梻鍌欐祰椤曟牠宕伴幘璇茬9婵犻潧妫涢弳锕傛煙閻戞ê鐏嶆俊鎻掔墛閹便劌螖閳ь剙螞閺冨倹顫曢柨鐕傛嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽弫鎰緞婵犲嫷鍚呴梻浣瑰缁诲倿骞夊☉銏犵缂備焦岣块崢閬嶆⒑闂堟稓澧曢柟鍐查叄椤㈡棃顢橀姀锛勫幐闁诲繒鍋犻褔鍩€椤掍胶绠撻柣锝囧厴椤㈡洟鏁冮埀顒€鏁梻浣瑰濡焦鎱ㄩ妶澶嬪剨閹肩补妾ч弨浠嬫煟閹邦剚鈻曢柛銈囧枎閳规垿顢氶埀顒€岣胯閿濈偛鈹戠€n€晝鎲告惔顭掔稏闁哄洢鍨洪悡娆撴煙鐟欏嫬濮﹂柛銈嗙懅閻ヮ亪骞嗚閹垹绱掔紒妯兼创鐎规洖宕灒闁惧繐婀遍幊鍡涙⒒娴e憡鍟為柨鏇ㄥ亞濡叉劙寮撮悩鎰佹綗闂佽鍎抽顓㈡偡瑜版帗鐓曢柕澶嬪灥鐎氼喛銇愰鐐粹拻濞达綀顫夐崑鐘绘煕閺傝法鐒搁柟顔哄劦瀹曟姊荤€靛摜鐣鹃梻浣告贡閾忓酣宕伴弽顐ょ焼闁告劏鏂傛禍婊堟煛閸愩劌鈧摜鏁崜浣虹<闁归偊鍘惧ú瀛樻叏婵犲啯銇濈€规洦鍋婂畷鐔煎垂椤愬诞鍥ㄢ拺闁硅偐鍋涙俊鑲╃磽瀹ュ拑宸ラ柣锝囧厴婵偓闁绘ê妫欏浠嬨€侀弮鍫濆窛妞ゆ挻绋戞禍楣冩煕椤垵浜芥繛鍫滅矙閺岋綁骞囬姘辨婵炲濮伴崹浠嬪蓟濞戙垹绫嶉柍褜鍓涢崰濠傤吋婢跺á锕傛煕閺囥劌鐏¢柡鍛矒閹綊宕堕鍕婵炲濮甸幃鍌炲箖濡ゅ啯鍠嗛柛鏇ㄥ墰閳规稓绱撴担铏瑰笡缂佽鐗撻幃浼搭敊閼恒儱鍔呴梺闈涒康缁犳垵鈻撻悢鍏尖拺闂傚牊鍐荤槐锟犳煕閹扳晛濡兼い鈺婂墴濮婂宕掑顑藉亾閹间降鍋戦柟缁㈠枛绾惧鏌涢弴銊モ偓瀣洪鍛珖闂侀€炲苯澧伴柛娆忔嚇濮婃椽宕崟顓夌娀鏌涢弬鍨劉闁哄懎鐖奸弫鎾绘偐閺傘儲瀚介梻浣呵归張顒勬偡閿斿墽鐭堥柣妤€鐗勬禍婊堟煛閸パ勵棞闁瑰啿顦靛畷鎴﹀箻鐠囨彃鐎銈嗗姂閸ㄨ櫣鎷犻悙鐑樺€甸悷娆忓缁€鍐磼椤旇姤宕屾鐐插暣婵偓闁挎稑瀚板顔界節閵忥絾纭炬い鎴濇川缁瑦绗熼埀顒€顫忕紒妯诲闁荤喐婢樻慨銏㈢磽娴h櫣甯涢柛鏃€娲熼弫鍐閳╁啰绉堕梺瀹犳〃缁垛€澄涘⿰鍫熲拺缂佸娉曠粻缁樹繆椤愩儲纭堕柟骞垮灲瀹曞崬螣闂€鎰泿闂備礁鎼粔鏌ュ礉鎼淬劊鈧倿寮婚妷锔惧幍濡炪倖鐗楀銊︽櫠濞戙垺鐓忛柛銉戝喚浼冨銈冨灪濞茬喐鎱ㄩ埀顒勬煃閹府楠忛柛銊︽そ婵$敻宕熼锝嗘櫆闂佸憡娲﹂崑鍛枔缂佹ḿ绡€缁剧増菤閸嬫挸鐣烽崶褏鍘介柣搴ゎ潐濞叉牕鐣烽鍐簷闂備線鈧偛鑻晶鎾煥濠靛牆浠﹂柟顖涙婵℃悂鏁傜憴鍕伖闂傚倷绀侀幉锛勭矙閹达负鍋戦柟缁㈠枟閸婂灝鈹戦崒姘暈闁绘挻娲熼弻鏇熷緞鐎n亞浠撮梺鐟板暱妤犳悂顢氶敐澶娢╅柕澶堝灪閺傗偓闂備胶绮敃鈺呭窗閺嶎厽鍊堕弶鍫涘妿缁犳儳顭跨捄渚剳妞ゎ剙銈搁弻锝堫槻闁活厼鍊搁~蹇涙惞閸︻厾锛滃┑鈽嗗灥瀹曠敻宕i崱娑欌拺闁告稑锕ㄦ竟妯汇亜閹存繍妯€妤犵偛鍟撮弫鎾绘偐閸欏倶鍔戦弻宥夊传閸曨偀鍋撻幖浣哥劦妞ゆ帒鍊归弳顒勬煛鐏炶濡奸柍瑙勫灴瀹曞崬鈽夐幍浣镐壕婵°倕鎳忛悡鏇熶繆椤栨粎甯涢悘蹇ョ畵閺岋紕浠﹂崜褋鈧帡鏌嶈閸撱劎绱為崱娑樼;闁告侗鍨悞濠囨煙濞堝灝鏋ょ痪鎹愬亹缁辨挻鎷呯拹顖滅窗缂備胶濮甸幐濠氬Φ閸曨垼鏁冮柨婵嗘川閻ゅ嫬顪冮妶鍐ㄧ仾闁挎岸鏌嶉挊澶樻Ц闁宠姘︾粻娑㈡晲閸曨厽銇濋梻鍌氬€搁崐宄懊归崶褏鏆﹂柣銏⑶圭粣妤呮煙闁箑鏋涢柛銊︾箞楠炴牕菐椤掆偓閻忣亝绻涢崨顖毿eǎ鍥э躬婵″爼宕ㄩ鐔割唹闂備礁鎼Λ娆戝垝閹捐钃熼柣鏂垮悑閸婄粯淇婇婵愬殭闁哄棙顨呴—鍐Χ閸屾稒鐝曢悷婊勬緲閸熸潙锕㈡笟鈧铏圭磼濡纰嶅┑鐐差嚟閸忔﹢鐛Δ鍛亹缂備焦岣块崢浠嬫⒑鐟欏嫬鍔ら柣掳鍔庣划鍫⑩偓锝庡枟閻撴稓鈧厜鍋撻柍褜鍓熷畷浼村冀椤撶姴绁﹂梺绯曞墲閸戠懓顬婇妸鈺傗拺闁硅偐鍋涢埀顒侇殜瀹曚即寮介鐐舵憰閻庡箍鍎遍ˇ鎵偓鐢靛Т椤潡鎳滈惉顏呭灴閸┿垽宕奸妷锔规嫼闂佸憡绻傜€氼垳鈧碍澹嗙槐鎺撳緞婵犲偆鏆㈠┑鈥冲级閸旀瑩鐛幒妤€绠犵€规洖娲ら弸娑㈡煙缁涘湱绡€濠碘€崇埣瀹曘劑顢橀悢鑽ゅ彂婵犵數濮烽。顔炬閺囥垹纾婚柟杈剧畱绾惧綊鏌曢崼婵愭Ц缁炬儳顭烽弻娑樷槈閸楃偟浠悗瑙勬礃閻擄繝寮诲☉銏╂晝闁绘ɑ褰冩慨搴g磽娴e搫啸濠殿喚鏁搁幑銏犫攽閸モ晝鐦堥梺绋挎湰缁嬫垵鈻嶉敐澶嬧拺闁告繂瀚烽崕蹇涙煟濡も偓閿曘儳绮氭潏銊х瘈闁搞儴鍩栭弲顒€鈹戦悩鑼粵闁告梹娲栭埢鎾活敇閻戝棙瀵岄梺闈涚墕閹虫劗绮婚幍顔剧=鐎广儱鎷戝銉︺亜椤愩垻绠茬紒缁樼箓椤繈顢楅崒锔惧簥濠电姷鏁搁崑娑樜涘▎鎾虫槬闁割偅鎯婇敐澶樻晪闁逞屽墮椤繘鎼圭憴鍕幑闂佸憡绮堢粈浣糕枔濠靛牏纾藉ù锝勭矙閸濈儤绻涢崣澶岀煉鐎规洘宀搁獮鎺楀箣閺冣偓閻庡姊虹憴鍕姢缁剧虎鍙冮、妯好洪鍛嫼闂佸湱枪鐎涒晠鎮¢妷鈺傜厵缁炬澘宕禍婵堢磼閸屾氨校缂佽桨绮欏畷銊︾箾閻愵剙顏归梻鍌欑閹诧紕鎹㈤崒婧惧亾濮橆剙妲婚崡杈╂喐閻楀牆绗氶柣鎾存礋閺屾洘绻涜閸燁垶鎮橀崼銉﹀€垫繛鍫濈仢閺嬬喖鏌熼鐓庘偓鎼侇敋閿濆鏁嬮柍褜鍓欓悾閿嬬附閸涘﹤浜滈梺鍛婄箓鐎氼剛绮绘导瀛樷拻闁稿本鐟чˇ锕傛煙鐠囇呯瘈鐎规洘绻嗛ˇ瀵糕偓鍨緲閿曨亪骞婇悙鍝勎ㄧ憸婊兠洪幖浣光拺闁告稑锕ョ€垫瑩鏌涘☉鍗炵伈缂佸崬鍟块埞鎴︽倷閼搁潧娑х紓鍌氱М閸嬫挸鈹戦悙鍙夊珔缂佹彃娼″顐︻敊鐏忔牗顫嶅┑顔角规禍顒勬晬濠婂牊鐓熼幖鎼灣缁夌敻鏌涚€n亝鍣藉ù婊勬倐楠炲秹顢欓崜褝绱查梻浣呵归張顒傜矙閹存緷褰掝敋閳ь剟寮婚埄鍐╁缂佸瀵у▓濠氭倵鐟欏嫭绀冮悽顖涘浮閿濈偛鈹戠€n亞鐤呴柣搴秵閸撴瑧鑺遍妷锔剧瘈闁汇垽娼ф牎濡炪倖姊归悧鐘茬暦閺夎鏃堝川椤旇姤鐝栭梻浣稿暱閹碱偊骞婃惔锝囩焼闁割偁鍎查悡銉╂煛閸モ晛浠滈柍褜鍓欑紞濠傜暦閹扮増鍋ㄩ柛娑橈功閸樼敻姊虹拠鈥崇仭婵犮垺枪椤e潡姊绘担鐟扳枙闁衡偓鏉堚晜鏆滈柟鐑橆殕缁犳帡姊绘担鐟邦嚋缂佽鍊块獮濠呯疀濞戞ḿ鐤呴梺褰掓?閻掞箓鎮¢妷锔剧闁瑰鍋嶇紓姘舵嚃閺嶎偆纾藉ù锝勭矙閸濇椽鎮介銈囩瘈闁靛棔绀侀~婵堟崉閸濆嫮鐛╂俊鐐€栭幐鐐叏閸愬樊娴栭柟鍓х節缁诲棝鏌曢崼婵囨悙閸熸悂姊虹粙娆惧剳闁稿鍊曢悾鐤亹閹烘垵鐎銈嗘⒒閸嬫挸鈻撴ィ鍐┾拺闁告挻褰冩禍婵囩箾鐠囇呯暤鐎殿噮鍋婂畷鍗炩槈濞嗘垵骞堥梺璇茬箳閸嬬喖宕戦幘缁樺剭闁硅揪闄勯悡蹇涙煕椤愵偄澧伴柣锝呯仛閹便劍绻濋崨顕呬哗闂佸綊顥撴繛鈧鐐存崌楠炴帡骞嬮悙鍨樼紓鍌氬€搁崐鎼佸磹閸濄儳鐭撻柡澶嬪殾濞戞ǚ鏋庨柟瀵稿Х閻掑潡鎮楅獮鍨姎妞わ富鍨跺畷姗€鍩€椤掆偓椤啴濡堕崱妯烘殫闂佺ǹ顑囬崰鏍х暦椤愨懡鏃€鎷呴搹璇″晭闂佽娴烽弫鍛婄仚閻庢稒绻傞—鍐Χ閸℃浠村┑鈽嗗亝缁诲牓鐛崘顔肩伋闁哄倶鍎查悗濠氭⒑閻熸澘鈷旈悶娑栧劦楠炲繘宕崟鍨瘜闂侀潧鐗嗗Λ娆戜焊椤忓牊鐓曢柡鍌氭健閸欏嫰鏌熼鈧粻鏍х暦閿熺姵鍊婚柛鈩冪懃閺佹悂鏌i悢鍝ョ煁缂侇喗鎸搁悾鐤亹閹烘挾鍔堕悗骞垮劚閹叉﹢鏁冮崒娑氬幈闂佸搫娲㈤崝宀勬倶閻樺厖绻嗘い鎰剁秶閼板潡鏌$仦鍓ф创闁炽儻绠撻獮瀣攽閸モ晙绨梻鍌欒兌鏋い鎴濇楠炴劖銈i崘銊х枀闂佸湱铏庨崰鏍矆鐎n偁浜滈柟鎯ь嚟閳洟鏌℃笟鈧ḿ褔鍩為幋锔藉亹闁割煈鍋呭В鍕節濞堝灝鏋熸繛鍏肩懅閸欏懘姊洪幐搴㈢闁稿﹤鎽滄竟鏇°亹閹烘挴鎷洪梺鍓茬厛閸n噣宕曞鍚ょ懓饪伴崟顓犵厜闂佺粯鎼╅崑濠傜暦閸洖惟闁挎洍鍋撶痪鏉跨Т椤啴濡堕崨顖滅杽闂佺ǹ锕ョ换鍫濐嚕鐠囨祴妲堟慨姗堢到娴滈箖鏌ㄥ┑鍡涱€楀ù婊勭箘閳ь剝顫夊ú鏍儔婵傜ǹ鐒垫い鎺嶇贰閸熷繘鏌涢悩宕囧⒌闁糕斁鍋撳銈嗗笒閸婄ǹ鈻嶈箛鏂剧箚濞e洤宕俊濂告煃鐟欏嫬鐏撮柟顔界懇楠炴捇骞掗幘鏂ュ亾椤栫偞鈷戠紓浣癸供濞堟洘绻涢懠顒€鏋涚€规洘妞介幃娆撳传閸曨収鍚呴梻浣瑰濡礁螞閸曨剛顩茬憸鐗堝笚閻撶喖骞栫划鐟板⒉閻犳劏鈧枼鏀芥い鏃囧Г鐏忥箓鎸婇悢鍝ョ瘈闂傚牊渚楅崕鎰版煃闁垮鐏╃紒杈ㄥ笧閳ь剨缍嗛崢濂稿礉閸偁浜滄い鎰靛墰閻g敻鏌$仦鍓ф创鐎殿噮鍓熷畷绋课旈埀顒€顕i弶璇炬棃鎮╅棃娑楃捕濡炪倧瀵岄崹鍫曟晲閻愬搫顫呴柣妯虹仛濞堟洟姊洪柅鐐茶嫰婢ф挳鏌熼鍏煎仴闁糕斁鍋撳銈嗗坊閸嬫捇鏌嶇憴鍕伌闁诡喗鐟╁鍫曞箣閻樿鲸顢橀柣搴″帨閸嬫捇鏌ㄥ┑鍡樺櫤闁稿鍎甸弻鐔碱敊閸忕厧浠撮悗瑙勬磸閸斿酣鍩€椤掍胶鈯曢懣銈夋煙闁垮銇濇慨濠冩そ濡啴鍩℃担鐑樞掗梻浣告啞閻熴垽宕戦幘鏂ユ斀闁挎稑瀚禍楣冩煙椤旂厧鈧灝顕g拠娴嬫闁靛繆鈧厖姹楅梻浣哥秺椤o箓鎮為敃鍌涘仾濞撴埃鍋撻柟顔筋殔閳绘捇宕归鐣屼憾闂備胶绮幖顐ゆ崲濠靛鍋樻い鏇楀亾鐎殿喕绮欐俊鎼佹晝閳ь剟顢撻幘缁樷拺闂傚牃鏅涢惁婊堟煕濡厧甯舵い鏇秮楠炲酣鎳為妷銏″濠电偠鎻紞鈧繛鍜冪悼閺侇喖鈽夊▎鎴狀啎闂佸憡鐟ラˇ杈ㄦ櫠閻㈢鍋撶憴鍕闁告梹鐟ラ悾鐑芥倻缁涘鏅e┑鐐村灦鐪夊瑙勬礀閳规垿顢欑紒鎾剁窗闂佺ǹ顑嗛幐楣冨焵椤掍胶鍟查柟鍑ゆ嫹
核心提示:随着过去三十年Oracle关系型数据库管理系统的发展,它提供给数据库管理员几个选项将经常被访问的数据保存在内存中以减少或消除从数据库的I/O子系统读取不必要的数据,Oracle Database 11g:SQL查询结果集缓存,下面是使数据库管理员可以在她的工具中找到的一些特性的快速概览,这些特性帮助维护对查询数据库内存

随着过去三十年Oracle关系型数据库管理系统的发展,它提供给数据库管理员几个选项将经常被访问的数据保存在内存中以减少或消除从数据库的I/O子系统读取不必要的数据。下面是使数据库管理员可以在她的工具中找到的一些特性的快速概览,这些特性帮助维护对查询数据库内存中相关数据的良好控制。

持久缓存数据库块。 CACHE 存储选项(还提供了+CACHE优化器提示)提供了一个为数据表保存所有数据库块的方法,只要这个表被表扫描进数据库缓存区中。一旦通过这个方法进行了缓存区,相关的缓存就绝不会从缓存区中过期,直到数据库实例终止。这个策略有一些缺陷,因为它依赖于数据库管理员对哪个表最能受益于缓存的了解,它还倾向于作为一个用于编码表和参照数据的万用解决方法而被过度使用。

影响数据库块的保存持久性。Oracle还通过创建或改变一个表或索引以便它保存在这个缓存池中,从而提供了影响缓存保持在数据库缓存区中的KEEP缓存池中的能力。Oracle只是简单的将缓存尽可能长时间的保存在KEEP池中;本质上来说,它们放置在缓存中更接近最常使用(MRU)的一端。但是,没有什么是永远的,当大型查询需要大量缓存来完成时,就可能使KEEP缓存池中的缓存最终过期。

永久地保存结果集。物化视图(MV)提供了一个保存经常查询的数据的方法:通过创建一个具有基本表的视图来保存一个特定记录集一段较长时间的能力。如果配置适当,Oracle将“重写”一个现有查询以便它查询物化视图而不是直接查询基本的数据库表。此外,可以建立一个物化视图以便对它的基本基础数据的改变可以自动地对依赖的物化视图进行更新。但是,物化视图的最明显优势也是它的潜在危害:因为它需要定期地进行更新以保证它的数据是最新的,数据的实际刷新可能花费额外的时间,甚至有可能发生在很不恰当的时刻。

我们真正需要的是持久性比这些特性短一些的东西(仍然很出色!):一段只存储一个查询结果的内存,它可以与任何其它需要相似数据的存储共享。例如,一个“编码表”捕捉U.S.各州和土地面积,它可能只是一个具有几行和几列的表,并且几乎都不改变,所以它应该很少需要被更新。因此,当这个结果集不再有效时,我希望它可以自己更新而不需要我进行任何干预。那么经常被几个用户频繁执行、但不经常利用物化视图的查询重写功能的查询怎么样呢?物化视图在创建、配置和刷新方面不是那么简单,所以这个特性需要比物化视图更易于建立,而且必须能够只花费几分钟的执行耗费来刷新它本身。

SQL查询结果集缓存

Oracle Database 11g提供了结果集缓存来提供这个功能。一个SQL查询结果集将取决于几个新的初始化参数的设置,被缓存在共享全局区(SGA)的一个数据库实例共享池的子段中。

RESULT_CACHE_MODE。这个新参数接受三个值之一,它可以被设置为数据库(ALTER SYSTEM)或单独会话(ALTER SESSION)级别:

当设置为MANUAL(默认)时,如果查询本身指定了+RESULT_CACHE优化器提示,那么一个SQL查询结果将只被认为是可能被缓存。

但是如果这个参数设置为FORCE,那么查询的结果将总是被缓存,除非这个查询指定了+NO_RESULT_CACHE优化器提示。

最后,如果这个参数设置为了AUTO,那么Oracle 11g使用一个未发布的内部算法来自动地根据结果集从未来语句执行受益频繁度来决定查询结果集是否应该被缓存。只有当这个查询指定了+NO_RESULT_CACHE优化器提示时它才会被忽略。

控制结果集缓存内存的利用。Oracle 11g还提供了几个方法来限制使得分配给SQL查询结果集缓存的内存数量是合适的:

RESULT_CACHE_MAX_SIZE。为所有的本地结果缓存预留适当的SGA内存量,数据库管理员可以为RESULT_CACHE_MAX_SIZE初始参数指定一个数值。Oracle 11g自动地将这个提供的数值四舍五入到最接近的32K界限。

如果没有提供数值,那么Oracle 11g使用下面的算法来为结果缓存分配内存:

如果为新的Oracle 11g MEMORY_TARGET 参数指定了数值(例如分配给数据库实例的SGA和PGA的总内存),那么Oracle将设置RESULT_CACHE_MAX_SIZE为MEMORY_TARGET的0.25%。

如果没有为MEMORY_TARGET设置数值,但是设置了SGA_TARGET的数值,那么Oracle 11g将RESULT_CACHE_MAX_SIZE设置为SGA_TARGET的0.5%。

最后,如果没有为MEMORY_TARGET设置数值,也没有为SGA_TARGET设置数值,那么Oracle根据的SHARED_POOL_SIZE设置将RESULT_CACHE_MAX_SIZE设置为分配给共享池的1.0%。

注意,无论使用哪个算法,Oracle 11g都不会将RESULT_CACHE_MAX_SIZE设置为超过SHARED_POOL_SIZE的75%。此外,要注意如果数据库管理员想使SQL结果缓存特性完全失效,那么她仅仅需要设置这个内存分配空间规模为0来告诉Oracle 11g不为结果缓存保留任何内存空间。

RESULT_CACHE_MAX_RESULT。 这个参数告诉Oracle 11g每个单个查询应该允许多少结果缓存。它的默认值是整个结果缓存的5%,这通常应该是足够的,但是它也可以设置为0%到100%。

RESULT_CACHE_REMOTE_EXPIRATION。 如果一个查询依赖于一个远程数据库,那么这个参数决定一个结果集应该保留的分钟数。默认数值为0分钟,这是作为对远程数据库表的任何改变不能在本地数据库检测到的一个提醒,因此陈旧的结果集可能会不适当地保持一段较长时间。这个参数可以设置为全局(ALTER SYSTEM)或对每个会话(ALTER SESSION)。

创建SQL查询结果缓存:一个简要的示例

在Listing1.1中,是关于怎样在MANUAL模式中使用SQL查询结果缓存特性的一个实际例子:

首先使用DBMS_RESULT_CACHE.PURGE(看下一节的详细描述)净化结果缓存,激活MANUAL结果缓存,然后将结果缓存的规模设置得相对较小,只有1MB。

然后用一个SQL查询从销售历史(SH)架构的PROMOTIONS表内容中捕捉一个关于总的和平均的提升成本的摘要级别表示。这个结果记录设置从源表超过500条的记录中捕捉不超过10条的记录,所以它对于SQL查询结果缓存是个较好的候选方式。

然后对原始的查询使用一个EXPLAIN PLAN,包括+RESULT_CACHE提示以便可以决定这个刚刚创建的结果缓存是否应该被以后的查询利用。它还创建了一个报表,详细地显示了结果缓存的内存是怎样被使用的。这是这个输出的一个示例:

ResultCacheMemoryReport
  [Parameters]
  BlockSize=1Kbytes
  MaximumCacheSize=1Mbytes(1Kblocks)
  MaximumResultSize=10Kbytes(10blocks)
  [Memory]
  TotalMemory=103528bytes[0.073%oftheSharedPool]
  ...FixedMemory=5132bytes[0.004%oftheSharedPool]
  .......CacheMgr=108bytes
  .......MemoryMgr=124bytes
  .......BloomFltr=2Kbytes
  .......StateObjs=2852bytes
  ...DynamicMemory=98396bytes[0.069%oftheSharedPool]
  .......Overhead=65628bytes
  ...........HashTable=32Kbytes(4Kbuckets)
  ...........ChunkPtrs=12Kbytes(3Kslots)
  ...........ChunkMaps=12Kbytes
  ...........Miscellaneous=8284bytes
  .......CacheMemory=32Kbytes(32blocks)
  ...........UnusedMemory=30blocks
  ...........UsedMemory=2blocks
  ...............Dependencies=1blocks(1count)
  ...............Results=1blocks

设置结果缓存模式为FORCE是怎样影响SQL查询结果缓存的当前内容的呢?Listing 1.2中的代码做了描述:

首先激活结果缓存的FORCE模式,然后将结果缓存的规模设置为相对较大的20MB,并允许单独结果缓存的最大规模为这个数值的一半(10MB)。

接下来,使用一个简单的SQL查询从可支付帐户测试数据中的AP.VENDORS表捕捉所有零售商的名称。因为这个查询不包括+NO_RESULT_CACHE优化器指示,所以这个结果集将会立即被缓存。

然后用一个SQL查询捕捉可支付帐户(AP)测试数据的一个更加复杂的摘要级别表示。因为结果记录集合并了+NO_RESULT_CACHE优化器指示,所以这个结果集不会被缓存。

最后一步是对这两个查询使用一个EXPLAIN PLAN来看对任何将来类似产生的结果集的影响。它还重新创建了结果缓存内存的详细报表来看看是否有什么改变了:

ResultCacheMemoryReport
  [Parameters]
  BlockSize=1Kbytes
  MaximumCacheSize=20Mbytes(20Kblocks)
  MaximumResultSize=10Mbytes(10Kblocks)
  [Memory]
  TotalMemory=103528bytes[0.073%oftheSharedPool]
  ...FixedMemory=5132bytes[0.004%oftheSharedPool]
  .......CacheMgr=108bytes
  .......MemoryMgr=124bytes
  .......BloomFltr=2Kbytes
  .......StateObjs=2852bytes
  ...DynamicMemory=98396bytes[0.069%oftheSharedPool]
  .......Overhead=65628bytes
  ...........HashTable=32Kbytes(4Kbuckets)
  ...........ChunkPtrs=12Kbytes(3Kslots)
  ...........ChunkMaps=12Kbytes
  ...........Miscellaneous=8284bytes
  .......CacheMemory=32Kbytes(32blocks)
  ...........UnusedMemory=24blocks
  ...........UsedMemory=8blocks
  ...............Dependencies=2blocks(2count)
  ...............Results=6blocks
  ...................SQL=6blocks(2count)
  EXPLAINPLANFOR
  SELECT/*SQRC_1.2*/
  vendor_id
  ,name
  FROMap.vendors
  ;
  SELECT*
  FROMTABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE',NULL));
  ----------------------------------------------------------------------------------------------------------------------------
  Planhashvalue:2620802014
  -------------------------------------------------------------------------------------------------
  |Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|
  -------------------------------------------------------------------------------------------------
  |0|SELECTSTATEMENT||164|3772|3(0)|00:00:01|
  |1|RESULTCACHE|89gqh0j9248q8d0w79w0fcwhw2|||||
  |2|TABLEACCESSFULL|VENDORS|164|3772|3(0)|00:00:01|
  -------------------------------------------------------------------------------------------------
  ResultCacheInformation(identifiedbyoperationid):
  ------------------------------------------------------
  1-column-count=2;dependencies=(AP.VENDORS);name="SELECT/*SQRC_1.2*/
  vendor_id
  ,name
  FROMap.vendors
  SQL>EXPLAINPLANFOR
  SELECT/*+NO_RESULT_CACHESQRC_1.3*/
  I.customer_id
  ,C.cust_last_name||','||C.cust_first_nameAScustomer_fullname
  ,SUM(ID.extended_amt)total_detail
  FROM
  ap.vendorsV
  ,ap.invoicesI
  ,ap.invoice_itemsID
  ,oe.customersC
  ,oe.product_informationP
  WHEREID.invoice_id=I.invoice_id
  ANDI.vendor_id=V.vendor_id
  ANDI.customer_id=C.customer_id
  ANDID.product_id=P.product_id
  ANDI.active_ind='Y'
  GROUPBY
  I.customer_id
  ,C.cust_last_name||','||C.cust_first_name
  ORDERBY
  I.customer_id
  ,C.cust_last_name||','||C.cust_first_name
  ;
  SELECT*
  FROMTABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE',NULL));
  234567891011121314151617181920212223
  Explained.
  SQL>2
  PLAN_TABLE_OUTPUT
  ----------------------------------------------------------------------------------------------------------------------------
  Planhashvalue:500053926
  ----------------------------------------------------------------------------------------------------
  |Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|
  ----------------------------------------------------------------------------------------------------
  |0|SELECTSTATEMENT||956|34416|11(19)|00:00:01|
  |1|SORTGROUPBY||956|34416|11(19)|00:00:01|
  |*2|HASHJOIN||956|34416|10(10)|00:00:01|
  |3|NESTEDLOOPS||||||
  |4|NESTEDLOOPS||25|700|6(0)|00:00:01|
  |5|TABLEACCESSFULL|CUSTOMERS|319|6061|5(0)|00:00:01|
  |*6|INDEXRANGESCAN|INVOICES_CUST_IDX|25||0(0)|00:00:01|
  |*7|TABLEACCESSBYINDEXROWID|INVOICES|1|9|1(0)|00:00:01|
  |8|TABLEACCESSFULL|INVOICE_ITEMS|975|7800|3(0)|00:00:01|
  ----------------------------------------------------------------------------------------------------
  PredicateInformation(identifiedbyoperationid):
  ---------------------------------------------------
  2-access("ID"."INVOICE_ID"="I"."INVOICE_ID")
  6-access("I"."CUSTOMER_ID"="C"."CUSTOMER_ID")
  filter("I"."CUSTOMER_ID">0)
  7-filter("I"."ACTIVE_IND"='Y')

使用DBMS_RESULT_CACHE控制SQL查询结果集缓存

Oracle 11g还提供了DBMS_RESULT_CACHE包来查询SQL结果缓存内容的状态和适当地控制SQL结果缓存内容。这是关于它的功能的一个简要摘要:

表 1-1. DBMS_RESULT_CACHE功能和存储过程

表 1-1. DBMS_RESULT_CACHE功能和存储过程
功能 / 存储过程描述
STATUS返回结果缓存的当前状态。值包括:ENABLED:结果缓存是激活的。DISABLED:结果缓存是不可用的。BYPASSED:结果缓存暂时不可用。SYNC: 结果缓存是可用的,但是目前正与其他RAC节点重新同步。
MEMORY_REPORT列出结果缓存内存利用的一个概要(默认)或详细的报表。
FLUSH推出整个结果缓存的内容。
INVALIDATE使结果缓存中一个特定对象的缓存结果无效。
INVALIDATE_OBJECT根据缓存ID使一特定结果缓存无效。

Listing 1.3 显示了一些关于怎样使用这些打包的存储过程和函数的额外例子。

结果缓存元数据

四个动态视图提供了关于现有结果缓存内容、内存利用和结果缓存所依赖的数据库对象的信息:

表1-2. SQL结果缓存元数据
视图描述
V$RESULT_CACHE_STATISTICS罗列出各种缓存设置和内存使用统计数据。
V$RESULT_CACHE_MEMORY列出所有的内存块和相应的统计信息。
V$RESULT_CACHE_OBJECTS列出所有的对象(缓存的结果和依赖的对象)和它们的属性。
V$RESULT_CACHE_DEPENDENCY列出缓存的结果和依赖对象间的依赖详情。

Listing 1.4是用于这篇文章单个示例(V$)的几个查询;扩展这些查询成为用于Real Application Clusters数据库的全局资源视图(GV$)是比较简单的工作。在Listing 1.5中,重新生成了对V$RESULT_CACHE_OBJECTS视图查询的结果,以此来描述它为缓存的结果集包含了什么元数据。

接下来的步骤

Oracle 11g新的结果缓存功能为数据库管理员提供了几个简单但很好的工具来捕捉、保存、监控和管理SQL查询结果缓存,加速了应用程序对相应持久数据的访问速度。在这个系列文章中的最后一篇中,我将介绍怎样在PL/SQL函数中利用结果集缓存,还有怎样在应用程序服务器级别来缓存结果集以便加快客户端应用程序对频繁访问数据的访问。

Tags:Oracle Database SQL

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接