锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美一区二区在线观看,中文字幕系列一区,aa视频在线观看http://www.aygfsteel.com/tinysun/category/37840.htmlzh-cnFri, 06 Aug 2010 19:59:17 GMTFri, 06 Aug 2010 19:59:17 GMT60鐢?Hadoop 榪涜鍒嗗竷寮忓茍琛岀紪紼?杞?/title><link>http://www.aygfsteel.com/tinysun/archive/2010/08/06/328098.html</link><dc:creator>浣曞厠鍕?/dc:creator><author>浣曞厠鍕?/author><pubDate>Fri, 06 Aug 2010 01:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/tinysun/archive/2010/08/06/328098.html</guid><wfw:comment>http://www.aygfsteel.com/tinysun/comments/328098.html</wfw:comment><comments>http://www.aygfsteel.com/tinysun/archive/2010/08/06/328098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tinysun/comments/commentRss/328098.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tinysun/services/trackbacks/328098.html</trackback:ping><description><![CDATA[Hadoop 鏄竴涓疄鐜頒簡 MapReduce 璁$畻妯″瀷鐨勫紑婧愬垎甯冨紡騫惰緙栫▼妗嗘灦錛屽€熷姪浜?Hadoop, 紼嬪簭鍛樺彲浠ヨ交鏉懼湴緙栧啓鍒嗗竷寮忓茍琛岀▼搴忥紝灝嗗叾榪愯浜庤綆楁満闆嗙兢涓婏紝瀹屾垚嫻烽噺鏁版嵁鐨勮綆椼€傛湰鏂囧皢浠嬬粛 MapReduce 璁$畻妯″瀷錛屽垎甯冨紡騫惰璁$畻絳夊熀鏈蹇碉紝浠ュ強 Hadoop 鐨勫畨瑁呴儴緗插拰鍩烘湰榪愯鏂規硶銆? <br /> Hadoop 綆€浠? <br /> <br /> Hadoop 鏄竴涓紑婧愮殑鍙繍琛屼簬澶ц妯¢泦緹や笂鐨勫垎甯冨紡騫惰緙栫▼妗嗘灦錛岀敱浜庡垎甯冨紡瀛樺偍瀵逛簬鍒嗗竷寮忕紪紼嬫潵璇存槸蹇呬笉鍙皯鐨勶紝榪欎釜妗嗘灦涓繕鍖呭惈浜嗕竴涓垎甯冨紡鏂囦歡緋葷粺 HDFS( Hadoop Distributed File System )銆備篃璁稿埌鐩墠涓烘錛孒adoop 榪樹笉鏄偅涔堝箍涓轟漢鐭ワ紝鍏舵渶鏂扮殑鐗堟湰鍙蜂篃浠呬粎鏄?0.16錛岃窛紱?1.0 浼間箮閮借繕鏈夊緢闀跨殑涓€孌佃窛紱伙紝浣嗘彁鍙?Hadoop 涓€鑴夌浉鎵跨殑鍙﹀涓や釜寮€婧愰」鐩? Nutch 鍜?Lucene ( 涓夎€呯殑鍒涘浜洪兘鏄?Doug Cutting ),閭g粷瀵規槸澶у悕榧庨紟銆侺ucene 鏄竴涓敤 Java 寮€鍙戠殑寮€婧愰珮鎬ц兘鍏ㄦ枃媯€绱㈠伐鍏峰寘錛屽畠涓嶆槸涓€涓畬鏁寸殑搴旂敤紼嬪簭錛岃€屾槸涓€濂楃畝鍗曟槗鐢ㄧ殑 API 銆傚湪鍏ㄤ笘鐣岃寖鍥村唴錛屽凡鏈夋棤鏁扮殑杞歡緋葷粺錛學eb 緗戠珯鍩轟簬 Lucene 瀹炵幇浜嗗叏鏂囨绱㈠姛鑳斤紝鍚庢潵 Doug Cutting 鍙堝紑鍒涗簡絎竴涓紑婧愮殑 Web 鎼滅儲寮曟搸(<a target="_blank">http://www.nutch.org</a>) Nutch, 瀹冨湪 Lucene 鐨勫熀紜€涓婂鍔犱簡緗戠粶鐖櫕鍜屼竴浜涘拰 Web 鐩稿叧鐨勫姛鑳斤紝涓€浜涜В鏋愬悇綾繪枃妗f牸寮忕殑鎻掍歡絳夛紝姝ゅ錛孨utch 涓繕鍖呭惈浜嗕竴涓垎甯冨紡鏂囦歡緋葷粺鐢ㄤ簬瀛樺偍鏁版嵁銆備粠 Nutch 0.8.0 鐗堟湰涔嬪悗錛孌oug Cutting 鎶?Nutch 涓殑鍒嗗竷寮忔枃浠剁郴緇熶互鍙婂疄鐜?MapReduce 綆楁硶鐨勪唬鐮佺嫭绔嬪嚭鏉ュ艦鎴愪簡涓€涓柊鐨勫紑婧愰」 Hadoop銆侼utch 涔熸紨鍖栦負鍩轟簬 Lucene 鍏ㄦ枃媯€绱互鍙?Hadoop 鍒嗗竷寮忚綆楀鉤鍙扮殑涓€涓紑婧愭悳绱㈠紩鎿庛€? <br /> <br /> 鍩轟簬 Hadoop,浣犲彲浠ヨ交鏉懼湴緙栧啓鍙鐞嗘搗閲忔暟鎹殑鍒嗗竷寮忓茍琛岀▼搴忥紝騫跺皢鍏惰繍琛屼簬鐢辨垚鐧句笂鍗冧釜緇撶偣緇勬垚鐨勫ぇ瑙勬ā璁$畻鏈洪泦緹や笂銆備粠鐩墠鐨勬儏鍐墊潵 鐪嬶紝Hadoop 娉ㄥ畾浼氭湁涓€涓緣鐓岀殑鏈潵錛?浜戣綆?鏄洰鍓嶇伕鎵嬪彲鐑殑鎶€鏈悕璇嶏紝鍏ㄧ悆鍚勫ぇ IT 鍏徃閮藉湪鎶曡祫鍜屾帹騫胯繖縐嶆柊涓€浠g殑璁$畻妯″紡錛岃€? Hadoop 鍙堣鍏朵腑鍑犲涓昏鐨勫叕鍙哥敤浣滃叾"浜戣綆?鐜涓殑閲嶈鍩虹杞歡錛屽:闆呰檸姝e湪鍊熷姪 Hadoop 寮€婧愬鉤鍙扮殑鍔涢噺瀵規姉 Google, 闄や簡璧勫姪 Hadoop 寮€鍙戝洟闃熷錛岃繕鍦ㄥ紑鍙戝熀浜?Hadoop 鐨勫紑婧愰」鐩?Pig, 榪欐槸涓€涓笓娉ㄤ簬嫻烽噺鏁版嵁闆嗗垎鏋愮殑鍒嗗竷寮忚綆楃▼搴忋€侫mazon 鍏徃鍩轟簬 Hadoop 鎺ㄥ嚭浜?Amazon S3 ( Amazon Simple Storage Service )錛屾彁渚涘彲闈狅紝蹇€燂紝鍙墿灞曠殑緗戠粶瀛樺偍鏈嶅姟錛屼互鍙婁竴涓晢鐢ㄧ殑浜戣綆楀鉤鍙?Amazon EC2 ( Amazon Elastic Compute Cloud )銆傚湪 IBM 鍏徃鐨勪簯璁$畻欏圭洰--"钃濅簯璁″垝"涓紝Hadoop 涔熸槸鍏朵腑閲嶈鐨勫熀紜€杞歡銆侴oogle 姝e湪璺烮BM鍚堜綔錛屽叡鍚屾帹騫垮熀浜?Hadoop 鐨勪簯璁$畻銆? <br /> <br /> <br /> 榪庢帴緙栫▼鏂瑰紡鐨勫彉闈? <br /> <br /> 鍦ㄦ懇灝斿畾寰嬬殑浣滅敤涓嬶紝浠ュ墠紼嬪簭鍛樻牴鏈笉鐢ㄨ€冭檻璁$畻鏈虹殑鎬ц兘浼氳窡涓嶄笂杞歡鐨勫彂灞曪紝鍥犱負綰︽瘡闅?18 涓湀錛孋PU 鐨勪富棰戝氨浼氬鍔犱竴鍊嶏紝鎬ц兘涔熷皢鎻愬崌涓€鍊嶏紝杞歡鏍規湰涓嶇敤鍋氫換浣曟敼鍙橈紝灝卞彲浠ヤ韓鍙楀厤璐圭殑鎬ц兘鎻愬崌銆傜劧鑰岋紝鐢變簬鏅朵綋綆$數璺凡緇忛€愭笎鎺ヨ繎鍏剁墿鐞嗕笂鐨勬€ц兘鏋侀檺錛屾懇灝? 瀹氬緥鍦?2005 騫村乏鍙沖紑濮嬪け鏁堜簡錛屼漢綾誨啀涔熶笉鑳芥湡寰呭崟涓?CPU 鐨勯€熷害姣忛殧 18 涓湀灝辯炕涓€鍊嶏紝涓烘垜浠彁渚涜秺鏉ヨ秺蹇殑璁$畻鎬ц兘銆侷ntel, AMD, IBM 絳夎姱鐗囧巶鍟嗗紑濮嬩粠澶氭牳榪欎釜瑙掑害鏉ユ寲鎺?CPU 鐨勬€ц兘娼滃姏錛屽鏍告椂浠d互鍙婁簰鑱旂綉鏃朵唬鐨勫埌鏉ワ紝灝嗕嬌杞歡緙栫▼鏂瑰紡鍙戠敓閲嶅ぇ鍙橀潻錛屽熀浜庡鏍哥殑澶氱嚎紼嬪茍鍙戠紪紼嬩互鍙婂熀浜庡ぇ瑙勬ā璁$畻鏈洪泦緹ょ殑鍒嗗竷寮忓茍琛岀紪紼嬫槸灝嗘潵杞? 浠舵€ц兘鎻愬崌鐨勪富瑕侀€斿緞銆? <br /> <br /> 璁稿浜鴻涓鴻繖縐嶇紪紼嬫柟寮忕殑閲嶅ぇ鍙樺寲灝嗗甫鏉ヤ竴嬈¤蔣浠剁殑騫跺彂鍗辨満錛屽洜涓烘垜浠紶緇熺殑杞歡鏂瑰紡鍩烘湰涓婃槸鍗曟寚浠ゅ崟鏁版嵁嫻佺殑欏哄簭鎵ц錛岃繖縐嶉『搴忔墽琛屽崄鍒嗙鍚堜漢 綾葷殑鎬濊€冧範鎯紝鍗翠笌騫跺彂騫惰緙栫▼鏍兼牸涓嶅叆銆傚熀浜庨泦緹ょ殑鍒嗗竷寮忓茍琛岀紪紼嬭兘澶熻杞歡涓庢暟鎹悓鏃惰繍琛屽湪榪炴垚涓€涓綉緇滅殑璁稿鍙拌綆楁満涓?榪欓噷鐨勬瘡涓€鍙拌綆楁満鍧囧彲浠? 鏄竴鍙版櫘閫氱殑 PC 鏈恒€傝繖鏍風殑鍒嗗竷寮忓茍琛岀幆澧冪殑鏈€澶т紭鐐規槸鍙互寰堝鏄撶殑閫氳繃澧炲姞璁$畻鏈烘潵鎵╁厖鏂扮殑璁$畻緇撶偣錛屽茍鐢辨鑾峰緱涓嶅彲鎬濊鐨勬搗閲忚綆楄兘鍔? 鍚屾椂鍙堝叿鏈夌浉褰撳己鐨勫閿欒兘鍔涳紝涓€鎵硅綆楃粨鐐瑰け鏁堜篃涓嶄細褰卞搷璁$畻鐨勬甯歌繘琛屼互鍙婄粨鏋滅殑姝g‘鎬с€侴oogle 灝辨槸榪欎箞鍋氱殑錛屼粬浠嬌鐢ㄤ簡鍙仛 MapReduce 鐨勫茍琛岀紪紼嬫ā鍨嬭繘琛屽垎甯冨紡騫惰緙栫▼錛岃繍琛屽湪鍙仛 GFS ( Google File System )鐨勫垎甯冨紡鏂囦歡緋葷粺涓婏紝涓哄叏鐞冧嚎涓囩敤鎴鋒彁渚涙悳绱㈡湇鍔°€? <br /> <br /> Hadoop 瀹炵幇浜?Google 鐨?MapReduce 緙栫▼妯″瀷錛屾彁渚涗簡綆€鍗曟槗鐢ㄧ殑緙栫▼鎺ュ彛錛屼篃鎻愪緵浜嗗畠鑷繁鐨勫垎甯冨紡鏂囦歡緋葷粺 HDFS,涓?Google 涓嶅悓鐨勬槸錛孒adoop 鏄紑婧愮殑錛屼換浣曚漢閮藉彲浠ヤ嬌鐢ㄨ繖涓鏋舵潵榪涜騫惰緙栫▼銆傚鏋滆鍒嗗竷寮忓茍琛岀紪紼嬬殑闅懼害瓚充互璁╂櫘閫氱▼搴忓憳鏈涜€岀敓鐣忕殑璇濓紝寮€婧愮殑 Hadoop 鐨勫嚭鐜版瀬澶х殑闄嶄綆浜嗗畠鐨勯棬妲涳紝璇誨畬鏈枃錛屼綘浼氬彂鐜板熀浜?Hadoop 緙栫▼闈炲父綆€鍗曪紝鏃犻』浠諱綍騫惰寮€鍙戠粡楠岋紝浣犱篃鍙互杞繪澗鐨勫紑鍙戝嚭鍒嗗竷寮忕殑騫惰紼嬪簭錛屽茍璁╁叾浠や漢闅句互緗俊鍦板悓鏃惰繍琛屽湪鏁扮櫨鍙版満鍣ㄤ笂錛岀劧鍚庡湪鐭椂闂村唴瀹屾垚嫻烽噺鏁版嵁 鐨勮綆椼€備綘鍙兘浼氳寰椾綘涓嶅彲鑳戒細鎷ユ湁鏁扮櫨鍙版満鍣ㄦ潵榪愯浣犵殑騫惰紼嬪簭錛岃€屼簨瀹炰笂錛岄殢鐫€"浜戣綆?鐨勬櫘鍙婏紝浠諱綍浜洪兘鍙互杞繪澗鑾峰緱榪欐牱鐨勬搗閲忚綆楄兘鍔涖€備緥濡傜幇鍦? Amazon 鍏徃鐨勪簯璁$畻騫沖彴 Amazon EC2 宸茬粡鎻愪緵浜嗚繖縐嶆寜闇€璁$畻鐨勭鐢ㄦ湇鍔★紝鏈夊叴瓚g殑璇昏€呭彲浠ュ幓浜嗚В涓€涓嬶紝榪欑瘒緋誨垪鏂囩珷鐨勭涓夐儴鍒嗗皢鏈夋墍浠嬬粛銆? <br /> <br /> 鎺屾彙涓€鐐瑰垎甯冨紡騫惰緙栫▼鐨勭煡璇嗗灝嗘潵鐨勭▼搴忓憳鏄繀涓嶅彲灝戠殑錛孒adoop 鏄姝ょ殑綆€渚垮ソ鐢紝浣曚笉灝濊瘯涓€涓嬪憿錛熶篃璁鎬綘宸茬粡鎬ヤ笉鍙€愮殑鎯寵瘯涓€涓嬪熀浜? Hadoop 鐨勭紪紼嬫槸鎬庝箞鍥炰簨浜嗭紝浣嗘瘯绔熻繖縐嶇紪紼嬫ā鍨嬩笌浼犵粺鐨勯『搴忕▼搴忓ぇ涓嶇浉鍚岋紝鎺屾彙涓€鐐瑰熀紜€鐭ヨ瘑鎵嶈兘鏇村ソ鍦扮悊瑙e熀浜?Hadoop 鐨勫垎甯冨紡騫惰紼嬪簭鏄浣曠紪鍐欏拰榪愯鐨勩€傚洜姝ゆ湰鏂囦細鍏堜粙緇嶄竴涓?MapReduce 鐨勮綆楁ā鍨嬶紝Hadoop 涓殑鍒嗗竷寮忔枃浠剁郴緇?HDFS, Hadoop 鏄浣曞疄鐜板茍琛岃綆楃殑錛岀劧鍚庢墠浠嬬粛濡備綍瀹夎鍜岄儴緗?Hadoop 妗嗘灦錛屼互鍙婂浣曡繍琛?Hadoop 紼嬪簭銆? <br /> <br /> MapReduce 璁$畻妯″瀷 <br /> <br /> MapReduce 鏄?Google 鍏徃鐨勬牳蹇冭綆楁ā鍨嬶紝瀹冨皢澶嶆潅鐨勮繍琛屼簬澶ц妯¢泦緹や笂鐨勫茍琛岃綆楄繃紼嬮珮搴︾殑鎶借薄鍒頒簡涓や釜鍑芥暟錛孧ap 鍜? Reduce, 榪欐槸涓€涓護浜烘儕璁剁殑綆€鍗曞嵈鍙堝▉鍔涘法澶х殑妯″瀷銆傞€傚悎鐢?MapReduce 鏉ュ鐞嗙殑鏁版嵁闆?鎴栦換鍔?鏈変竴涓熀鏈姹? 寰呭鐞嗙殑鏁版嵁闆嗗彲浠ュ垎瑙f垚璁稿灝忕殑鏁版嵁闆嗭紝鑰屼笖姣忎竴涓皬鏁版嵁闆嗛兘鍙互瀹屽叏騫惰鍦拌繘琛屽鐞嗐€? <br /> <br /> <br /> 鍥?1. MapReduce 璁$畻嫻佺▼ <br /> <img src="http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop1/figure1.jpg" alt="" /> <br /> 鍥句竴璇存槑浜嗙敤 MapReduce 鏉ュ鐞嗗ぇ鏁版嵁闆嗙殑榪囩▼, 榪欎釜 MapReduce 鐨勮綆楄繃紼嬬畝鑰岃█涔嬶紝灝辨槸灝嗗ぇ鏁版嵁闆嗗垎瑙d負鎴愮櫨涓婂崈鐨勫皬鏁版嵁闆嗭紝姣忎釜(鎴栬嫢騫蹭釜)鏁版嵁闆嗗垎鍒敱闆嗙兢涓殑涓€涓粨鐐?涓€鑸氨鏄竴鍙版櫘閫氱殑璁$畻鏈?榪涜澶勭悊騫剁敓 鎴愪腑闂寸粨鏋滐紝鐒跺悗榪欎簺涓棿緇撴灉鍙堢敱澶ч噺鐨勭粨鐐硅繘琛屽悎騫? 褰㈡垚鏈€緇堢粨鏋溿€? <br /> <br /> 璁$畻妯″瀷鐨勬牳蹇冩槸 Map 鍜?Reduce 涓や釜鍑芥暟錛岃繖涓や釜鍑芥暟鐢辯敤鎴瘋礋璐e疄鐜幫紝鍔熻兘鏄寜涓€瀹氱殑鏄犲皠瑙勫垯灝嗚緭鍏ョ殑 <key, value> 瀵硅漿鎹㈡垚鍙︿竴涓垨涓€鎵?<key, value> 瀵硅緭鍑恒€? <br /> <br /> <br /> 琛ㄤ竴 Map 鍜?Reduce 鍑芥暟 <br /> 鍑芥暟 杈撳叆 杈撳嚭 璇存槑 <br /> Map <k1, v1> List(<k2,v2>) 1. 灝嗗皬鏁版嵁闆嗚繘涓€姝ヨВ鏋愭垚涓€鎵?<key,value> 瀵癸紝杈撳叆 Map 鍑芥暟涓繘琛屽鐞嗐€? <br /> 2. 姣忎竴涓緭鍏ョ殑 <k1,v1> 浼氳緭鍑轟竴鎵?<k2,v2>銆?<k2,v2> 鏄綆楃殑涓棿緇撴灉銆?nbsp; <br /> Reduce <k2,List(v2)> <k3,v3> 杈撳叆鐨勪腑闂寸粨鏋?<k2,List(v2)> 涓殑 List(v2) 琛ㄧず鏄竴鎵瑰睘浜庡悓涓€涓?k2 鐨?value <br /> <br /> 浠ヤ竴涓綆楁枃鏈枃浠朵腑姣忎釜鍗曡瘝鍑虹幇鐨勬鏁扮殑紼嬪簭涓轟緥錛?lt;k1,v1> 鍙互鏄?<琛屽湪鏂囦歡涓殑鍋忕Щ浣嶇疆, 鏂囦歡涓殑涓€琛?gt;錛岀粡 Map 鍑芥暟鏄犲皠涔嬪悗錛屽艦鎴愪竴鎵逛腑闂寸粨鏋?<鍗曡瘝錛屽嚭鐜版鏁?gt;, 鑰?Reduce 鍑芥暟鍒欏彲浠ュ涓棿緇撴灉榪涜澶勭悊錛屽皢鐩稿悓鍗曡瘝鐨勫嚭鐜版鏁拌繘琛岀瘡鍔狅紝寰楀埌姣忎釜鍗曡瘝鐨勬€葷殑鍑虹幇嬈℃暟銆? <br /> <br /> 鍩轟簬 MapReduce 璁$畻妯″瀷緙栧啓鍒嗗竷寮忓茍琛岀▼搴忛潪甯哥畝鍗曪紝紼嬪簭鍛樼殑涓昏緙栫爜宸ヤ綔灝辨槸瀹炵幇 Map 鍜?Reduce 鍑芥暟錛屽叾瀹冪殑騫惰緙栫▼涓殑縐嶇澶嶆潅闂錛屽鍒嗗竷寮忓瓨鍌紝宸ヤ綔璋冨害錛岃礋杞藉鉤琛★紝瀹歸敊澶勭悊錛岀綉緇滈€氫俊絳夛紝鍧囩敱 MapReduce 妗嗘灦(姣斿 Hadoop )璐熻矗澶勭悊錛岀▼搴忓憳瀹屽叏涓嶇敤鎿嶅績銆? <br /> <br /> 鍥?闆嗙兢涓婄殑騫惰璁$畻 <br /> <br /> MapReduce 璁$畻妯″瀷闈炲父閫傚悎鍦ㄥぇ閲忚綆楁満緇勬垚鐨勫ぇ瑙勬ā闆嗙兢涓婂茍琛岃繍琛屻€傚浘涓€涓殑姣忎竴涓?Map 浠誨姟鍜屾瘡涓€涓?Reduce 浠誨姟鍧囧彲浠ュ悓鏃惰繍琛屼簬涓€涓崟鐙殑璁$畻緇撶偣涓婏紝鍙兂鑰岀煡鍏惰繍綆楁晥鐜囨槸寰堥珮鐨勶紝閭d箞榪欐牱鐨勫茍琛岃綆楁槸濡備綍鍋氬埌鐨勫憿錛? <br /> <br /> 鏁版嵁鍒嗗竷瀛樺偍 <br /> <br /> Hadoop 涓殑鍒嗗竷寮忔枃浠剁郴緇?HDFS 鐢變竴涓鐞嗙粨鐐?( NameNode )鍜孨涓暟鎹粨鐐?( DataNode )緇勬垚錛屾瘡涓粨鐐瑰潎鏄竴鍙版櫘閫氱殑璁$畻鏈恒€傚湪浣跨敤涓婂悓鎴戜滑鐔熸倝鐨勫崟鏈轟笂鐨勬枃浠剁郴緇熼潪甯哥被浼鹼紝涓€鏍峰彲浠ュ緩鐩綍錛屽垱寤猴紝澶嶅埗錛屽垹闄ゆ枃浠訛紝鏌ョ湅鏂囦歡鍐呭絳夈€備絾鍏跺簳 灞傚疄鐜頒笂鏄妸鏂囦歡鍒囧壊鎴?Block錛岀劧鍚庤繖浜?Block 鍒嗘暎鍦板瓨鍌ㄤ簬涓嶅悓鐨?DataNode 涓婏紝姣忎釜 Block 榪樺彲浠ュ鍒舵暟浠藉瓨鍌ㄤ簬涓嶅悓鐨? DataNode 涓婏紝杈懼埌瀹歸敊瀹圭伨涔嬬洰鐨勩€侼ameNode 鍒欐槸鏁翠釜 HDFS 鐨勬牳蹇冿紝瀹冮€氳繃緇存姢涓€浜涙暟鎹粨鏋勶紝璁板綍浜嗘瘡涓€涓枃浠惰鍒囧壊鎴愪簡澶氬皯涓?Block錛岃繖浜?Block 鍙互浠庡摢浜?DataNode 涓幏寰楋紝鍚勪釜 DataNode 鐨勭姸鎬佺瓑閲嶈淇℃伅銆傚鏋滀綘鎯充簡瑙f洿澶氱殑鍏充簬 HDFS 鐨勪俊鎭紝鍙繘涓€姝ラ槄璇誨弬鑰冭祫鏂欙細 [url]The Hadoop Distributed File System:Architecture and Design [/url] <br /> 鍒嗗竷寮忓茍琛岃綆? <br /> <br /> Hadoop 涓湁涓€涓綔涓轟富鎺х殑 JobTracker錛岀敤浜庤皟搴﹀拰綆$悊鍏跺畠鐨?TaskTracker, JobTracker 鍙互榪愯浜庨泦緹や腑浠諱竴鍙拌綆楁満涓娿€俆askTracker 璐熻矗鎵ц浠誨姟錛屽繀欏昏繍琛屼簬 DataNode 涓婏紝鍗?DataNode 鏃㈡槸鏁版嵁瀛樺偍緇撶偣錛屼篃鏄綆楃粨鐐廣€?JobTracker 灝?Map 浠誨姟鍜?Reduce 浠誨姟鍒嗗彂緇欑┖闂茬殑 TaskTracker, 璁╄繖浜涗換鍔″茍琛岃繍琛岋紝騫惰礋璐g洃鎺т換鍔$殑榪愯鎯呭喌銆傚鏋滄煇涓€涓?TaskTracker 鍑烘晠闅滀簡錛孞obTracker 浼氬皢鍏惰礋璐g殑浠誨姟杞氦緇欏彟涓€涓┖闂茬殑 TaskTracker 閲嶆柊榪愯銆? <br /> <br /> 鏈湴璁$畻 <br /> <br /> 鏁版嵁瀛樺偍鍦ㄥ摢涓€鍙拌綆楁満涓婏紝灝辯敱榪欏彴璁$畻鏈鴻繘琛岃繖閮ㄥ垎鏁版嵁鐨勮綆楋紝榪欐牱鍙互鍑忓皯鏁版嵁鍦ㄧ綉緇滀笂鐨勪紶杈擄紝闄嶄綆瀵圭綉緇滃甫瀹界殑闇€姹傘€傚湪 Hadoop 榪欐牱鐨勫熀浜庨泦緹ょ殑鍒嗗竷寮忓茍琛岀郴緇熶腑錛岃綆楃粨鐐瑰彲浠ュ緢鏂逛究鍦版墿鍏咃紝鑰屽洜瀹冩墍鑳藉鎻愪緵鐨勮綆楄兘鍔涜繎涔庢槸鏃犻檺鐨勶紝浣嗘槸鐢辨槸鏁版嵁闇€瑕佸湪涓嶅悓鐨勮綆楁満涔嬮棿嫻佸姩錛屾晠緗? 緇滃甫瀹藉彉鎴愪簡鐡墮錛屾槸闈炲父瀹濊吹鐨勶紝“鏈湴璁$畻”鏄渶鏈夋晥鐨勪竴縐嶈妭綰︾綉緇滃甫瀹界殑鎵嬫錛屼笟鐣屾妸榪欏艦瀹逛負“縐誨姩璁$畻姣旂Щ鍔ㄦ暟鎹洿緇忔祹”銆? <br /> <br /> 鍥?2. 鍒嗗竷瀛樺偍涓庡茍琛岃綆? <br /> <img src="http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop1/figure2.jpg" alt="" /> <br /> <br /> 浠誨姟綺掑害 <br /> <br /> 鎶婂師濮嬪ぇ鏁版嵁闆嗗垏鍓叉垚灝忔暟鎹泦鏃訛紝閫氬父璁╁皬鏁版嵁闆嗗皬浜庢垨絳変簬 HDFS 涓竴涓?Block 鐨勫ぇ灝?緙虹渷鏄? 64M)錛岃繖鏍瘋兘澶熶繚璇佷竴涓皬鏁版嵁闆嗕綅浜庝竴鍙拌綆楁満涓婏紝渚夸簬鏈湴璁$畻銆傛湁 M 涓皬鏁版嵁闆嗗緟澶勭悊錛屽氨鍚姩 M 涓?Map 浠誨姟錛屾敞鎰忚繖 M 涓?Map 浠誨姟鍒嗗竷浜?N 鍙拌綆楁満涓婂茍琛岃繍琛岋紝Reduce 浠誨姟鐨勬暟閲?R 鍒欏彲鐢辯敤鎴鋒寚瀹氥€? <br /> <br /> Partition <br /> <br /> 鎶?Map 浠誨姟杈撳嚭鐨勪腑闂寸粨鏋滄寜 key 鐨勮寖鍥村垝鍒嗘垚 R 浠? R 鏄鍏堝畾涔夌殑 Reduce 浠誨姟鐨勪釜鏁?錛屽垝鍒嗘椂閫氬父浣跨敤 hash 鍑芥暟濡? hash(key) mod R錛岃繖鏍峰彲浠ヤ繚璇佹煇涓€孌佃寖鍥村唴鐨?key錛屼竴瀹氭槸鐢變竴涓?Reduce 浠誨姟鏉ュ鐞嗭紝鍙互綆€鍖?Reduce 鐨勮繃紼嬨€? <br /> <br /> Combine <br /> <br /> 鍦?partition 涔嬪墠錛岃繕鍙互瀵逛腑闂寸粨鏋滃厛鍋?combine錛屽嵆灝嗕腑闂寸粨鏋滀腑鏈夌浉鍚?key鐨?<key, value> 瀵瑰悎騫舵垚涓€瀵廣€俢ombine 鐨勮繃紼嬩笌 Reduce 鐨勮繃紼嬬被浼鹼紝寰堝鎯呭喌涓嬪氨鍙互鐩存帴浣跨敤 Reduce 鍑芥暟錛屼絾 combine 鏄綔涓? Map 浠誨姟鐨勪竴閮ㄥ垎錛屽湪鎵ц瀹?Map 鍑芥暟鍚庣揣鎺ョ潃鎵ц鐨勩€侰ombine 鑳藉鍑忓皯涓棿緇撴灉涓?<key, value> 瀵圭殑鏁扮洰錛屼粠鑰屽噺灝戠綉緇滄祦閲忋€? <br /> <br /> Reduce 浠誨姟浠?Map 浠誨姟緇撶偣鍙栦腑闂寸粨鏋? <br /> <br /> Map 浠誨姟鐨勪腑闂寸粨鏋滃湪鍋氬畬 Combine 鍜?Partition 涔嬪悗錛屼互鏂囦歡褰㈠紡瀛樹簬鏈湴紓佺洏銆備腑闂寸粨鏋滄枃浠剁殑浣嶇疆浼氶€氱煡涓繪帶 JobTracker, JobTracker 鍐嶉€氱煡 Reduce 浠誨姟鍒板摢涓€涓?DataNode 涓婂幓鍙栦腑闂寸粨鏋溿€傛敞鎰忔墍鏈夌殑 Map 浠誨姟浜х敓涓棿緇撴灉鍧囨寜鍏?Key 鐢ㄥ悓涓€涓?Hash 鍑芥暟鍒掑垎鎴愪簡 R 浠斤紝R 涓?Reduce 浠誨姟鍚勮嚜璐熻矗涓€孌?Key 鍖洪棿銆傛瘡涓? Reduce 闇€瑕佸悜璁稿涓?Map 浠誨姟緇撶偣鍙栧緱钀藉湪鍏惰礋璐g殑 Key 鍖洪棿鍐呯殑涓棿緇撴灉錛岀劧鍚庢墽琛?Reduce 鍑芥暟錛屽艦鎴愪竴涓渶緇堢殑緇撴灉鏂囦歡銆? <br /> <br /> 浠誨姟綆¢亾 <br /> <br /> 鏈?R 涓?Reduce 浠誨姟錛屽氨浼氭湁 R 涓渶緇堢粨鏋滐紝寰堝鎯呭喌涓嬭繖 R 涓渶緇堢粨鏋滃茍涓嶉渶瑕佸悎騫舵垚涓€涓渶緇堢粨鏋溿€傚洜涓鴻繖 R 涓渶緇堢粨鏋滃張鍙互鍋氫負鍙︿竴涓綆椾換鍔$殑杈撳叆錛屽紑濮嬪彟涓€涓茍琛岃綆椾換鍔°€? <br /> <br /> 浜?Hadoop 鍒濅綋楠? <br /> <br /> Hadoop 鏀寔 Linux 鍙?Windows 鎿嶄綔緋葷粺, 浣嗗叾瀹樻柟緗戠珯澹版槑 Hadoop 鐨勫垎甯冨紡鎿嶄綔鍦?Windows 涓婃湭鍋氫弗鏍兼祴璇曪紝寤鴻鍙妸 Windows 浣滀負 Hadoop 鐨勫紑鍙戝鉤鍙般€傚湪 Windows 鐜涓婄殑瀹夎姝ラ濡備笅( Linux 騫沖彴綾諱技錛屼笖鏇寸畝鍗曚竴浜?: <br /> <br /> (1)鍦?Windows 涓嬶紝闇€瑕佸厛瀹夎 Cgywin, 瀹夎 Cgywin 鏃舵敞鎰忎竴瀹氳閫夋嫨瀹夎 openssh (鍦?Net category )銆傚畨瑁呭畬鎴愪箣鍚庯紝鎶?Cgywin 鐨勫畨瑁呯洰褰曞 c:\cygwin\bin 鍔犲埌緋葷粺鐜鍙橀噺 PATH 涓紝榪欐槸鍥犱負榪愯 Hadoop 瑕佹墽琛屼竴浜?linux 鐜涓嬬殑鑴氭湰鍜屽懡浠ゃ€? <br /> <br /> (2)瀹夎 Java 1.5.x錛屽茍灝?JAVA_HOME 鐜鍙橀噺璁劇疆涓?Java 鐨勫畨瑁呮牴鐩綍濡?C:\Program Files\Java\jdk1.5.0_01銆? <br /> <br /> (3)鍒?Hadoop 瀹樻柟緗戠珯[url] http://hadoop.apache.org[/url]涓嬭澆Hadoop Core, 鏈€鏂扮殑紼沖畾鐗堟湰鏄?0.16.0. 灝嗕笅杞藉悗鐨勫畨瑁呭寘瑙e帇鍒頒竴涓洰褰曪紝鏈枃鍋囧畾瑙e帇鍒?c:\hadoop-0.16.0銆? <br /> <br /> 4)淇敼 conf/hadoop-env.sh 鏂囦歡錛屽湪鍏朵腑璁劇疆 JAVA_HOME 鐜鍙橀噺錛?export JAVA_HOME="C:\Program Files\Java\jdk1.5.0_01” (鍥犱負璺緞涓?Program Files 涓棿鏈夌┖鏍鹼紝涓€瀹氳鐢ㄥ弻寮曞彿灝嗚礬寰勫紩璧鋒潵) <br /> <br /> 鑷蟲錛屼竴鍒囧氨緇紝鍙互榪愯 Hadoop 浜嗐€備互涓嬬殑榪愯榪囩▼錛岄渶瑕佸惎鍔?cygwin, 榪涘叆妯℃嫙 Linux 鐜銆傚湪涓嬭澆鐨?Hadoop Core 鍖呬腑錛屽甫鏈夊嚑涓ず渚嬬▼搴忓茍涓斿凡緇忔墦鍖呮垚浜?hadoop-0.16.0-examples.jar銆傚叾涓湁涓€涓?WordCount 紼嬪簭錛屽姛鑳芥槸緇熻涓€鎵規枃鏈枃浠朵腑鍚勪釜鍗曡瘝鍑虹幇鐨勬鏁幫紝鎴戜滑鍏堟潵鐪嬬湅鎬庝箞榪愯榪欎釜紼嬪簭銆侶adoop 鍏辨湁涓夌榪愯妯″紡: 鍗曟満(闈炲垎甯冨紡)妯″紡錛屼吉鍒嗗竷寮忚繍琛屾ā寮忥紝鍒嗗竷寮忚繍琛屾ā寮忥紝鍏朵腑鍓嶄袱縐嶈繍琛屾ā寮忎綋鐜頒笉浜?Hadoop 鍒嗗竷寮忚綆楃殑浼樺娍錛屽茍娌℃湁浠€涔堝疄闄呮剰涔夛紝浣嗗紼嬪簭鐨勬祴璇曞強璋冭瘯寰堟湁甯姪錛屾垜浠厛浠庤繖涓ょ妯″紡鍏ユ墜錛屼簡瑙e熀浜?Hadoop 鐨勫垎甯冨紡騫惰紼嬪簭鏄浣曠紪鍐欏拰榪愯鐨勩€? <br /> <br /> 鍗曟満(闈炲垎甯冨紡)妯″紡 <br /> <br /> 榪欑妯″紡鍦ㄤ竴鍙板崟鏈轟笂榪愯錛屾病鏈夊垎甯冨紡鏂囦歡緋葷粺錛岃€屾槸鐩存帴璇誨啓鏈湴鎿嶄綔緋葷粺鐨勬枃浠剁郴緇熴€? <br /> <br /> <br /> 浠g爜娓呭崟1 <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java浠g爜 <embed src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%24%20cd%20%2Fcygdrive%2Fc%2Fhadoop-0.16.0%0A%24%20mkdir%20test-in%20%20%0A%24%20cd%20test-in%0A%23%E5%9C%A8%20test-in%20%E7%9B%AE%E5%BD%95%E4%B8%8B%E5%88%9B%E5%BB%BA%E4%B8%A4%E4%B8%AA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%2C%20WordCount%20%E7%A8%8B%E5%BA%8F%E5%B0%86%E7%BB%9F%E8%AE%A1%E5%85%B6%E4%B8%AD%E5%90%84%E4%B8%AA%E5%8D%95%E8%AF%8D%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%0A%24%20echo%20%22hello%20world%20bye%20world%22%20%3Efile1.txt%20%20%20%0A%24%20echo%20%22hello%20hadoop%20goodbye%20hadoop%22%20%3Efile2.txt%0A%24%20cd%20..%0A%24%20bin%2Fhadoop%20jar%20hadoop-0.16.0-examples.jar%20wordcount%20test-in%20test-out%0A%23%E6%89%A7%E8%A1%8C%E5%AE%8C%E6%AF%95%EF%BC%8C%E4%B8%8B%E9%9D%A2%E6%9F%A5%E7%9C%8B%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%EF%BC%9A%0A%24%20cd%20test-out%0A%24%20cat%20part-00000%0Abye%20%20%20%20%201%0Agoodbye%20%201%0Ahadoop%20%202%0Ahello%20%20%20%202%0Aworld%20%20%202" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div> </div> <ol class="dp-j" start="1"> <li><span><span>$ cd /cygdrive/c/hadoop-</span><span id="wmqeeuq" class="number">0.16</span><span>.</span><span id="wmqeeuq" class="number">0</span><span>  </span></span></li> <li><span>$ mkdir test-in    </span></li> <li><span>$ cd test-in  </span></li> <li><span>#鍦?nbsp;test-in 鐩綍涓嬪垱寤轟袱涓枃鏈枃浠? WordCount 紼嬪簭灝嗙粺璁″叾涓悇涓崟璇嶅嚭鐜版鏁?nbsp; </span></li> <li><span>$ echo <span id="wmqeeuq" class="string">"hello world bye world"</span><span> >file1.txt     </span></span></li> <li><span>$ echo <span id="wmqeeuq" class="string">"hello hadoop goodbye hadoop"</span><span> >file2.txt  </span></span></li> <li><span>$ cd ..  </span></li> <li><span>$ bin/hadoop jar hadoop-<span id="wmqeeuq" class="number">0.16</span><span>.</span><span id="wmqeeuq" class="number">0</span><span>-examples.jar wordcount test-in test-out  </span></span></li> <li><span>#鎵ц瀹屾瘯錛屼笅闈㈡煡鐪嬫墽琛岀粨鏋滐細  </span></li> <li><span>$ cd test-out  </span></li> <li><span>$ cat part-<span id="wmqeeuq" class="number">00000</span><span>  </span></span></li> <li><span>bye     <span id="wmqeeuq" class="number">1</span><span>  </span></span></li> <li><span>goodbye  <span id="wmqeeuq" class="number">1</span><span>  </span></span></li> <li><span>hadoop  <span id="wmqeeuq" class="number">2</span><span>  </span></span></li> <li><span>hello    <span id="wmqeeuq" class="number">2</span><span>  </span></span></li> <li><span>world   <span id="wmqeeuq" class="number">2</span><span>  </span></span></li> </ol> </div> <pre style="display: none;" name="code" class="java">$ cd /cygdrive/c/hadoop-0.16.0 $ mkdir test-in $ cd test-in #鍦?test-in 鐩綍涓嬪垱寤轟袱涓枃鏈枃浠? WordCount 紼嬪簭灝嗙粺璁″叾涓悇涓崟璇嶅嚭鐜版鏁? $ echo "hello world bye world" >file1.txt $ echo "hello hadoop goodbye hadoop" >file2.txt $ cd .. $ bin/hadoop jar hadoop-0.16.0-examples.jar wordcount test-in test-out #鎵ц瀹屾瘯錛屼笅闈㈡煡鐪嬫墽琛岀粨鏋滐細 $ cd test-out $ cat part-00000 bye 1 goodbye 1 hadoop 2 hello 2 world 2</pre> <br /> <br /> 娉ㄦ剰浜嬮」錛氳繍琛?bin/hadoop jar hadoop-0.16.0-examples.jar wordcount test-in test-out 鏃訛紝鍔″繀娉ㄦ剰絎竴涓弬鏁版槸 jar, 涓嶆槸 -jar, 褰撲綘鐢?-jar 鏃訛紝涓嶄細鍛婅瘔浣犳槸鍙傛暟閿欎簡錛屾姤鍛婂嚭鏉ョ殑閿欒淇℃伅鏄細Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/ProgramDriver, 絎旇€呭綋鏃朵互涓烘槸 classpath 鐨勮緗棶棰橈紝嫻垂浜嗕笉灝戞椂闂淬€傞€氳繃鍒嗘瀽 bin/hadoop 鑴氭湰鍙煡錛?jar 騫朵笉鏄?bin/hadoop 鑴氭湰瀹氫箟鐨勫弬鏁幫紝姝よ剼鏈細鎶?-jar 浣滀負 Java 鐨勫弬鏁幫紝Java 鐨?jar 鍙傛暟琛ㄧず鎵ц涓€涓?Jar 鏂囦歡(榪欎釜 Jar 鏂囦歡蹇呴』鏄竴涓彲鎵ц鐨?Jar,鍗沖湪 MANIFEST 涓畾涔変簡涓葷被), 姝ゆ椂澶栭儴瀹氫箟鐨?classpath 鏄笉璧蜂綔鐢ㄧ殑錛屽洜鑰屼細鎶涘嚭 java.lang.NoClassDefFoundError 寮傚父銆傝€?jar 鏄?bin/hadoop 鑴氭湰瀹氫箟鐨勫弬鏁幫紝浼氳皟鐢?Hadoop 鑷繁鐨勪竴涓伐鍏風被 RunJar錛岃繖涓伐鍏風被涔熻兘澶熸墽琛屼竴涓?Jar 鏂囦歡錛屽茍涓斿閮ㄥ畾涔夌殑 classpath 鏈夋晥銆? <br /> <br /> 浼垎甯冨紡榪愯妯″紡 <br /> <br /> 榪欑妯″紡涔熸槸鍦ㄤ竴鍙板崟鏈轟笂榪愯錛屼絾鐢ㄤ笉鍚岀殑 Java 榪涚▼妯′豢鍒嗗竷寮忚繍琛屼腑鐨勫悇綾葷粨鐐?( NameNode, DataNode, JobTracker, TaskTracker, Secondary NameNode )錛岃娉ㄦ剰鍒嗗竷寮忚繍琛屼腑鐨勮繖鍑犱釜緇撶偣鐨勫尯鍒細 <br /> <br /> 浠庡垎甯冨紡瀛樺偍鐨勮搴︽潵璇達紝闆嗙兢涓殑緇撶偣鐢變竴涓?NameNode 鍜岃嫢騫蹭釜 DataNode 緇勬垚, 鍙︽湁涓€涓?Secondary NameNode 浣滀負 NameNode 鐨勫浠姐€備粠鍒嗗竷寮忓簲鐢ㄧ殑瑙掑害鏉ヨ錛岄泦緹や腑鐨勭粨鐐圭敱涓€涓?JobTracker 鍜岃嫢騫蹭釜 TaskTracker 緇勬垚錛孞obTracker 璐熻矗浠誨姟鐨勮皟搴︼紝TaskTracker 璐熻矗騫惰鎵ц浠誨姟銆俆askTracker 蹇呴』榪愯鍦? DataNode 涓婏紝榪欐牱渚夸簬鏁版嵁鐨勬湰鍦拌綆椼€侸obTracker 鍜?NameNode 鍒欐棤欏誨湪鍚屼竴鍙版満鍣ㄤ笂銆? <br /> <br /> (1) 鎸変唬鐮佹竻鍗?淇敼 conf/hadoop-site.xml銆傛敞鎰?conf/hadoop-default.xml 涓槸 Hadoop 緙虹渷鐨勫弬鏁幫紝浣犲彲浠ラ€氳繃璇繪鏂囦歡浜嗚В Hadoop 涓湁鍝簺鍙傛暟鍙緵閰嶇疆錛屼絾涓嶈淇敼姝ゆ枃浠躲€傚彲閫氳繃淇敼 conf/hadoop-site.xml 鏀瑰彉緙虹渷鍙傛暟鍊鹼紝姝ゆ枃浠朵腑璁劇疆鐨勫弬鏁板€間細瑕嗙洊 conf/hadoop-default.xml 鐨勫悓鍚嶅弬鏁般€? <br /> <br /> <br /> 浠g爜娓呭崟 2 <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java浠g爜 <embed src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%3Cconfiguration%3E%0A%20%20%3Cproperty%3E%0A%20%20%20%20%3Cname%3Efs.default.name%3C%2Fname%3E%0A%20%20%20%20%3Cvalue%3Elocalhost%3A9000%3C%2Fvalue%3E%0A%20%20%3C%2Fproperty%3E%0A%20%20%3Cproperty%3E%0A%20%20%20%20%3Cname%3Emapred.job.tracker%3C%2Fname%3E%0A%20%20%20%20%3Cvalue%3Elocalhost%3A9001%3C%2Fvalue%3E%0A%20%20%3C%2Fproperty%3E%0A%20%20%3Cproperty%3E%0A%20%20%20%20%3Cname%3Edfs.replication%3C%2Fname%3E%0A%20%20%20%20%3Cvalue%3E1%3C%2Fvalue%3E%0A%20%20%3C%2Fproperty%3E%0A%3C%2Fconfiguration%3E" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div> </div> <ol class="dp-j" start="1"> <li><span><span><configuration>  </span></span></li> <li><span>  <property>  </span></li> <li><span>    <name>fs.<span id="wmqeeuq" class="keyword">default</span><span>.name</name>  </span></span></li> <li><span>    <value>localhost:<span id="wmqeeuq" class="number">9000</span><span></value>  </span></span></li> <li><span>  </property>  </span></li> <li><span>  <property>  </span></li> <li><span>    <name>mapred.job.tracker</name>  </span></li> <li><span>    <value>localhost:<span id="wmqeeuq" class="number">9001</span><span></value>  </span></span></li> <li><span>  </property>  </span></li> <li><span>  <property>  </span></li> <li><span>    <name>dfs.replication</name>  </span></li> <li><span>    <value><span id="wmqeeuq" class="number">1</span><span></value>  </span></span></li> <li><span>  </property>  </span></li> <li><span></configuration>  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java"><configuration> <property> <name>fs.default.name</name> <value>localhost:9000</value> </property> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration></pre> <br /> <br /> 鍙傛暟 fs.default.name 鎸囧畾 NameNode 鐨?IP 鍦板潃鍜岀鍙e彿銆傜己鐪佸€兼槸 file:///, 琛ㄧず浣跨敤鏈湴鏂囦歡緋葷粺, 鐢ㄤ簬鍗曟満闈炲垎甯冨紡妯″紡銆傛澶勬垜浠寚瀹氫嬌鐢ㄨ繍琛屼簬鏈満 localhost 涓婄殑 NameNode銆? <br /> <br /> 鍙傛暟 mapred.job.tracker 鎸囧畾 JobTracker 鐨?IP 鍦板潃鍜岀鍙e彿銆傜己鐪佸€兼槸 local, 琛ㄧず鍦ㄦ湰鍦板悓涓€ Java 榪涚▼鍐呮墽琛?JobTracker 鍜?TaskTracker, 鐢ㄤ簬鍗曟満闈炲垎甯冨紡妯″紡銆傛澶勬垜浠寚瀹氫嬌鐢ㄨ繍琛屼簬鏈満 localhost 涓婄殑 JobTracker ( 鐢ㄤ竴涓崟鐙殑 Java 榪涚▼鍋?JobTracker )銆? <br /> <br /> 鍙傛暟 dfs.replication 鎸囧畾 HDFS 涓瘡涓?Block 琚鍒剁殑嬈℃暟錛岃搗鏁版嵁鍐椾綑澶囦喚鐨勪綔鐢ㄣ€傚湪鍏稿瀷鐨勭敓浜х郴緇熶腑錛岃繖涓暟甯稿父璁劇疆涓?銆? <br /> <br /> (2)閰嶇疆 SSH,濡備唬鐮佹竻鍗?鎵€紺? <br /> <br /> <br /> 浠g爜娓呭崟 3 <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java浠g爜 <embed src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%24%20ssh-keygen%20-t%20dsa%20-P%20''%20-f%20~%2F.ssh%2Fid_dsa%20%0A%24%20cat%20~%2F.ssh%2Fid_dsa.pub%20%3E%3E%20~%2F.ssh%2Fauthorized_keys" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div> </div> <ol class="dp-j" start="1"> <li><span><span>$ ssh-keygen -t dsa -P </span><span id="wmqeeuq" class="string">''</span><span> -f ~/.ssh/id_dsa   </span></span></li> <li><span>$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys</pre> <br /> <br /> 閰嶇疆瀹屽悗錛屾墽琛屼竴涓?ssh localhost, 紜浣犵殑鏈哄櫒鍙互鐢?SSH 榪炴帴錛屽茍涓旇繛鎺ユ椂涓嶉渶瑕佹墜宸ヨ緭鍏ュ瘑鐮併€? <br /> <br /> (3)鏍煎紡鍖栦竴涓柊鐨勫垎甯冨紡鏂囦歡緋葷粺, 濡備唬鐮佹竻鍗?鎵€紺? <br /> <br /> <br /> 浠g爜娓呭崟 4 <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java浠g爜 <embed src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%24%20cd%20%2Fcygdrive%2Fc%2Fhadoop-0.16.0%0A%24%20bin%2Fhadoop%20namenode%20%E2%80%93format%20" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div> </div> <ol class="dp-j" start="1"> <li><span><span>$ cd /cygdrive/c/hadoop-</span><span id="wmqeeuq" class="number">0.16</span><span>.</span><span id="wmqeeuq" class="number">0</span><span>  </span></span></li> <li><span>$ bin/hadoop namenode –format   </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">$ cd /cygdrive/c/hadoop-0.16.0 $ bin/hadoop namenode –format </pre> <br /> <br /> (4) 鍚姩 hadoop 榪涚▼, 濡備唬鐮佹竻鍗?鎵€紺恒€傛帶鍒跺彴涓婄殑杈撳嚭淇℃伅搴旇鏄劇ず鍚姩浜?namenode, datanode, secondary namenode, jobtracker, tasktracker銆傚惎鍔ㄥ畬鎴愪箣鍚庯紝閫氳繃 ps –ef 搴旇鍙互鐪嬪埌鍚姩浜?涓柊鐨?java 榪涚▼銆? <br /> <br /> 浠g爜娓呭崟 5 <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java浠g爜 <embed src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%24%20bin%2Fstart-all.sh%20%20%0A%24%20ps%20%E2%80%93ef" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div> </div> <ol class="dp-j" start="1"> <li><span><span>$ bin/start-all.sh    </span></span></li> <li><span>$ ps –ef  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">$ bin/start-all.sh $ ps –ef</pre> <br /> <br /> (5) 榪愯 wordcount 搴旂敤, 濡備唬鐮佹竻鍗?鎵€紺? <br /> <br /> 浠g爜娓呭崟 6 <br /> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java浠g爜 <embed src="http://mintelong.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%24%20bin%2Fhadoop%20dfs%20-put%20.%2Ftest-in%20input%20%20%0A%23%E5%B0%86%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%20.%2Ftest-in%20%E7%9B%AE%E5%BD%95%E6%8B%B7%E5%88%B0%20HDFS%20%E7%9A%84%E6%A0%B9%E7%9B%AE%E5%BD%95%E4%B8%8A%EF%BC%8C%E7%9B%AE%E5%BD%95%E5%90%8D%E6%94%B9%E4%B8%BA%20input%0A%23%E6%89%A7%E8%A1%8C%20bin%2Fhadoop%20dfs%20%E2%80%93help%20%E5%8F%AF%E4%BB%A5%E5%AD%A6%E4%B9%A0%E5%90%84%E7%A7%8D%20HDFS%20%E5%91%BD%E4%BB%A4%E7%9A%84%E4%BD%BF%E7%94%A8%E3%80%82%0A%24%20bin%2Fhadoop%20jar%20hadoop-0.16.0-examples.jar%20wordcount%20input%20output%0A%23%E6%9F%A5%E7%9C%8B%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%3A%0A%23%E5%B0%86%E6%96%87%E4%BB%B6%E4%BB%8E%20HDFS%20%E6%8B%B7%E5%88%B0%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%86%8D%E6%9F%A5%E7%9C%8B%EF%BC%9A%0A%24%20bin%2Fhadoop%20dfs%20-get%20output%20output%20%0A%24%20cat%20output%2F*%0A%23%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%9B%B4%E6%8E%A5%E6%9F%A5%E7%9C%8B%0A%24%20bin%2Fhadoop%20dfs%20-cat%20output%2F*%0A%24%20bin%2Fstop-all.sh%20%23%E5%81%9C%E6%AD%A2%20hadoop%20%E8%BF%9B%E7%A8%8B" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15"></div> </div> <ol class="dp-j" start="1"> <li><span><span>$ bin/hadoop dfs -put ./test-in input    </span></span></li> <li><span>#灝嗘湰鍦版枃浠剁郴緇熶笂鐨?nbsp;./test-in 鐩綍鎷峰埌 HDFS 鐨勬牴鐩綍涓婏紝鐩綍鍚嶆敼涓?nbsp;input  </span></li> <li><span>#鎵ц bin/hadoop dfs –help 鍙互瀛︿範鍚勭 HDFS 鍛戒護鐨勪嬌鐢ㄣ€?nbsp; </span></li> <li><span>$ bin/hadoop jar hadoop-<span id="wmqeeuq" class="number">0.16</span><span>.</span><span id="wmqeeuq" class="number">0</span><span>-examples.jar wordcount input output  </span></span></li> <li><span>#鏌ョ湅鎵ц緇撴灉:  </span></li> <li><span>#灝嗘枃浠朵粠 HDFS 鎷峰埌鏈湴鏂囦歡緋葷粺涓啀鏌ョ湅錛?nbsp; </span></li> <li><span>$ bin/hadoop dfs -get output output   </span></li> <li><span>$ cat output/*  </span></li> <li><span>#涔熷彲浠ョ洿鎺ユ煡鐪?nbsp; </span></li> <li><span>$ bin/hadoop dfs -cat output/*  </span></li> <li><span>$ bin/stop-all.sh #鍋滄 hadoop 榪涚▼  </span></li> </ol> </div> <pre style="display: none;" name="code" class="java">$ bin/hadoop dfs -put ./test-in input #灝嗘湰鍦版枃浠剁郴緇熶笂鐨?./test-in 鐩綍鎷峰埌 HDFS 鐨勬牴鐩綍涓婏紝鐩綍鍚嶆敼涓?input #鎵ц bin/hadoop dfs –help 鍙互瀛︿範鍚勭 HDFS 鍛戒護鐨勪嬌鐢ㄣ€? $ bin/hadoop jar hadoop-0.16.0-examples.jar wordcount input output #鏌ョ湅鎵ц緇撴灉: #灝嗘枃浠朵粠 HDFS 鎷峰埌鏈湴鏂囦歡緋葷粺涓啀鏌ョ湅錛? $ bin/hadoop dfs -get output output $ cat output/* #涔熷彲浠ョ洿鎺ユ煡鐪? $ bin/hadoop dfs -cat output/* $ bin/stop-all.sh #鍋滄 hadoop 榪涚▼</pre> <br /> <br /> 鏁呴殰璇婃柇 <br /> <br /> (1) 鎵ц $ bin/start-all.sh 鍚姩 Hadoop 榪涚▼鍚庯紝浼氬惎鍔?涓?java 榪涚▼, 鍚屾椂浼氬湪 /tmp 鐩綍涓嬪垱寤轟簲涓?pid 鏂囦歡璁板綍榪欎簺榪涚▼ ID 鍙楓€傞€氳繃榪欎簲涓枃浠訛紝鍙互寰楃煡 namenode, datanode, secondary namenode, jobtracker, tasktracker 鍒嗗埆瀵瑰簲浜庡摢涓€涓?Java 榪涚▼銆傚綋浣犺寰?Hadoop 宸ヤ綔涓嶆甯告椂錛屽彲浠ラ鍏堟煡鐪嬭繖5涓?java 榪涚▼鏄惁鍦ㄦ甯歌繍琛屻€? <br /> <br /> (2) 浣跨敤 web 鎺ュ彛銆傝闂?http://localhost:50030 鍙互鏌ョ湅 JobTracker 鐨勮繍琛岀姸鎬併€傝闂? http://localhost:50060 鍙互鏌ョ湅 TaskTracker 鐨勮繍琛岀姸鎬併€傝闂?http://localhost:50070 鍙互鏌ョ湅 NameNode 浠ュ強鏁翠釜鍒嗗竷寮忔枃浠剁郴緇熺殑鐘舵€侊紝嫻忚鍒嗗竷寮忔枃浠剁郴緇熶腑鐨勬枃浠朵互鍙?log 絳夈€? <br /> <br /> (3) 鏌ョ湅 ${HADOOP_HOME}/logs 鐩綍涓嬬殑 log 鏂囦歡錛宯amenode, datanode, secondary namenode, jobtracker, tasktracker 鍚勬湁涓€涓搴旂殑 log 鏂囦歡錛屾瘡涓€嬈¤繍琛岀殑璁$畻浠誨姟涔熸湁瀵瑰簲鐢?log 鏂囦歡銆傚垎鏋愯繖浜?log 鏂囦歡鏈夊姪浜庢壘鍒版晠闅滃師鍥犮€? <br /> <br /> <br /> 緇撴潫璇? <br /> <br /> 鐜板湪錛屼綘宸茬粡浜嗚В浜?MapReduce 璁$畻妯″瀷錛屽垎甯冨紡鏂囦歡緋葷粺 HDFS錛屽垎甯冨紡騫惰璁$畻絳夌殑鍩烘湰鍘熺悊, 騫朵笖鏈変簡涓€涓彲浠ヨ繍琛岀殑 Hadoop 鐜錛岃繍琛屼簡涓€涓熀浜?Hadoop 鐨勫茍琛岀▼搴忋€? <img src ="http://www.aygfsteel.com/tinysun/aggbug/328098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tinysun/" target="_blank">浣曞厠鍕?/a> 2010-08-06 09:42 <a href="http://www.aygfsteel.com/tinysun/archive/2010/08/06/328098.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浜嗚ВSQL Server鎵ц璁″垝 http://www.aygfsteel.com/tinysun/archive/2010/04/15/318438.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Thu, 15 Apr 2010 09:12:00 GMThttp://www.aygfsteel.com/tinysun/archive/2010/04/15/318438.htmlhttp://www.aygfsteel.com/tinysun/comments/318438.htmlhttp://www.aygfsteel.com/tinysun/archive/2010/04/15/318438.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/318438.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/318438.html濡傛灉鍦ㄦ墽琛岃鍒掍腑鐪嬪埌濡備笅鎵€紺虹殑浠諱綍涓€欏癸紝灝卞簲璇ュ皢瀹冧滑瑙嗕綔璀﹀憡淇″彿騫惰皟鏌ュ畠浠互鎵懼嚭娼滃湪鐨勬€ц兘闂銆備粠鎬ц兘鏂歸潰鏉ヨ錛屼笅闈㈡墍紺虹殑姣忎竴欏歸兘鏄笉鐞嗘兂鐨勩€?/p>

 Index or table scans(绱㈠紩鎴栬€呰〃鎵弿)錛氬彲鑳芥剰鍛崇潃闇€瑕佹洿濂界殑鎴栬€呴澶栫殑绱㈠紩銆?/p>

Bookmark Lookups(涔︾鏌ユ壘)錛氳€冭檻淇敼褰撳墠鐨勮仛闆嗙儲寮曪紝浣跨敤澶嶇洊绱㈠紩錛岄檺鍒禨ELECT璇彞涓殑瀛楁鏁伴噺銆?/p>

Filter(榪囨護)錛氬湪WHERE浠庡彞涓Щ闄ょ敤鍒扮殑浠諱綍鍑芥暟錛屼笉瑕佸湪SQL璇彞涓寘鍚鍥撅紝鍙兘闇€瑕侀澶栫殑绱㈠紩銆?/p>

Sort(鎺掑簭)錛氭暟鎹槸鍚︾湡鐨勯渶瑕佹帓搴忥紵鍙惁浣跨敤绱㈠紩鏉ラ伩鍏嶆帓搴忥紵鍦ㄥ鎴風鎺掑簭鏄惁浼氭洿鍔犳湁鏁堢巼錛?/p>

 

鏌ョ湅SQL Server鍥懼艦鎵ц璁″垝鏃訛紝鍙互鏌ユ壘鐨勯潪甯告湁鐢ㄧ殑涓€涓笢瑗垮氨鏄煡璇紭鍖栧櫒濡備綍涓虹粰瀹氱殑鏌ヨ浣跨敤绱㈠紩鏉ヤ粠琛ㄤ腑鑾峰彇鏁版嵁銆傞€氳繃鏌ョ湅鏄惁鏈夌敤鍒扮儲寮曪紝浠ュ強绱㈠紩濡備綍琚嬌鐢紝閮芥湁鍔╀簬鍒ゆ柇褰撳墠鐨勭儲寮曟槸鍚︿嬌寰楁煡璇㈡墽琛屽緱灝藉彲鑳界殑蹇€?/p>

灝嗛紶鏍囩Щ鍒板浘褰㈡墽琛岃鍒掍笂鐨勮〃鍚?浠ュ強瀹冪殑鍥炬爣)涓婇潰錛屽氨浼氬脊鍑轟竴涓獥鍙o紝浠庡畠涓婇潰鍙互鐪嬪埌涓€浜涗俊鎭€傝繖浜涗俊鎭浣犵煡閬撴槸鍚︽湁鐢ㄥ埌绱㈠紩鏉ヤ粠琛ㄤ腑鑾峰彇鏁版嵁錛屼互鍙婂畠鏄浣曚嬌鐢ㄧ殑銆傝繖浜涗俊鎭寘鎷細

·     Table Scan(琛ㄦ壂鎻?錛氬鏋滅湅鍒拌繖涓俊鎭紝灝辮鏄庢暟鎹〃涓婃病鏈夎仛闆嗙儲寮曪紝鎴栬€呮煡璇紭鍖栧櫒娌℃湁浣跨敤绱㈠紩鏉ユ煡鎵俱€傛剰鍗寵祫鏂欒〃鐨勬瘡涓€琛岄兘琚鏌ュ埌銆傚鏋滆祫鏂欒〃鐩稿杈冨皬鐨勮瘽錛岃〃鎵弿鍙互闈炲父蹇€燂紝鏈夋椂鐢氳嚦蹇繃浣跨敤绱㈠紩銆?/p>

鍥犳錛屽綋鐪嬪埌鏈夋墽琛岃〃鎵弿鏃訛紝絎竴浠惰鍋氱殑浜嬪氨鏄湅鐪嬫暟鎹〃鏈夊灝戞暟鎹銆傚鏋滀笉鏄お澶氱殑璇濓紝閭d箞琛ㄦ壂鎻忓彲鑳芥彁渚涗簡鏈€濂界殑鎬諱綋鏁堣兘銆備絾濡傛灉鏁版嵁琛ㄥぇ鐨勮瘽錛岃〃鎵弿灝辨瀬鍙兘闇€瑕侀暱鏃墮棿鏉ュ畬鎴愶紝鏌ヨ鏁堣兘灝卞ぇ鍙楀獎鍝嶃€傚湪榪欑鎯呭喌涓嬶紝灝遍渶瑕佷粩緇嗙爺絀訛紝涓烘暟鎹〃澧炲姞涓€涓€傚綋鐨勭儲寮曠敤浜庤繖涓煡璇€€?/p>

鍋囪浣犲彂鐜版煇鏌ヨ浣跨敤浜嗚〃鎵弿錛屾湁涓€涓悎閫傜殑闈炶仛闆嗙儲寮曪紝浣嗗畠娌℃湁鐢ㄥ埌銆傝繖鎰忓懗鐫€浠€涔堝憿錛熶負浠€涔堣繖涓儲寮曟病鏈夌敤鍒板憿錛熷鏋滈渶瑕佽幏寰楃殑鏁版嵁閲忕浉瀵規暟鎹〃澶у皬鏉ヨ闈炲父澶э紝鎴栬€呮暟鎹€夋嫨鎬т笉楂?鎰忓懗鐫€鍚屼竴涓瓧孌典腑閲嶅鐨勫€煎緢澶?錛岃〃鎵弿緇忓父浼氭瘮绱㈠紩鎵弿蹇€備緥濡傦紝濡傛灉涓€涓暟鎹〃鏈?0000涓暟鎹錛屾煡璇㈣繑鍥?000琛岋紝濡傛灉榪欎釜琛ㄦ病鏈夎仛闆嗙儲寮曠殑璇濓紝閭d箞琛ㄦ壂鎻忓皢姣斾嬌鐢ㄤ竴涓潪鑱氶泦绱㈠紩鏇村揩銆傛垨鑰呭鏋滄暟鎹〃鏈?0000涓暟鎹錛屼笖鍚屼竴涓瓧孌?WHERE鏉′歡鍙ユ湁鐢ㄥ埌榪欎釜瀛楁)涓婃湁1000絎旈噸澶嶇殑鏁版嵁錛岃〃鎵弿涔熶細姣斾嬌鐢ㄩ潪鑱氶泦绱㈠紩鏇村揩銆?/p>

鏌ョ湅鍥懼艦鎵ц璁″垝涓婄殑鏁版嵁琛ㄤ笂鐨勫脊鍑哄紡紿楀彛鏃訛紝璇鋒敞鎰?#8221;棰勪及鐨勮祫鏂欒鏁?Estimated Row Count)”銆傝繖涓暟瀛楁槸鏌ヨ浼樺寲鍣ㄤ綔鍑虹殑澶氬皯涓暟鎹浼氳榪斿洖鐨勬渶浣蟲帹嫻嬨€傚鏋滄墽琛屼簡琛ㄦ壂鎻忎笖”棰勪及鐨勬暟鎹鏁?#8221;鏁板€煎緢楂樼殑璇濓紝灝辨剰鍛崇潃榪斿洖鐨勮褰曟暟寰堝錛屾煡璇紭鍖栧櫒璁や負鎵ц琛ㄦ壂鎻忔瘮浣跨敤鍙敤鐨勯潪鑱氶泦绱㈠紩鏇村揩銆?/p>

·     Index Seek(绱㈠紩鏌ユ壘)錛氱儲寮曟煡鎵炬剰鍛崇潃鏌ヨ浼樺寲鍣ㄤ嬌鐢ㄤ簡鏁版嵁琛ㄤ笂鐨勯潪鑱氶泦绱㈠紩鏉ユ煡鎵炬暟鎹€傛€ц兘閫氬父浼氬緢蹇紝灝ゅ叾鏄綋鍙湁灝戞暟鐨勬暟鎹琚繑鍥炴椂銆?/p>

·     Clustered Index Seek(鑱氶泦绱㈠紩鏌ユ壘)錛氳繖鎸囨煡璇紭鍖栧櫒浣跨敤浜嗘暟鎹〃涓婄殑鑱氶泦绱㈠紩鏉ユ煡鎵炬暟鎹紝鎬ц兘寰堝揩銆傚疄闄呬笂錛岃繖鏄疭QL Server鑳藉仛鐨勬渶蹇殑绱㈠紩鏌ユ壘綾誨瀷銆?/p>

·     Clustered Index Scan(鑱氶泦绱㈠紩鎵弿)錛氳仛闆嗙儲寮曟壂鎻忎笌琛ㄦ壂鎻忕浉浼鹼紝涓嶅悓鐨勬槸鑱氶泦绱㈠紩鎵弿鏄湪涓€涓緩鏈夎仛闆嗙儲寮曠殑鏁版嵁琛ㄤ笂鎵ц鐨勩€傚拰涓€鑸殑琛ㄦ壂鎻忎竴鏍鳳紝鑱氶泦绱㈠紩鎵弿鍙兘琛ㄦ槑瀛樺湪鏁堣兘闂銆備竴鑸潵璇達紝鏈変袱縐嶅師鍥犱細寮曟鑱氶泦绱㈠紩鎵弿鐨勬墽琛屻€傜涓€涓師鍥狅紝鐩稿浜庢暟鎹〃涓婄殑鏁翠綋鏁版嵁琛屾暟鐩紝鍙兘闇€瑕佽幏鍙栧お澶氱殑鏁版嵁琛屻€傛煡鐪?#8221;棰勪及鐨勬暟鎹鏁伴噺(Estimated Row Count)”鍙互瀵規鍔犱互楠岃瘉銆傜浜屼釜鍘熷洜錛屽彲鑳芥槸鐢變簬WHERE鏉′歡鍙ヤ腑鐢ㄥ埌鐨勫瓧孌甸€夋嫨鎬т笉楂樸€傚湪浠諱綍鎯呭喌涓嬶紝涓庢爣鍑嗙殑琛ㄦ壂鎻忎笉鍚岋紝鑱氶泦绱㈠紩鎵弿騫朵笉浼氭€繪槸鍘繪煡鎵炬暟鎹〃涓殑鎵€鏈夋暟鎹紝鎵€浠ヨ仛闆嗙儲寮曟壂鎻忎竴鑸兘浼氭瘮鏍囧噯鐨勮〃鎵弿瑕佸揩銆傞€氬父鏉ヨ錛岃灝嗚仛闆嗙儲寮曟壂鎻忔敼鎴愯仛闆嗙儲寮曟煡鎵撅紝浣犲敮涓€鑳藉仛鐨勬槸閲嶅啓鏌ヨ璇彞錛岃璇彞闄愬埗鎬ф洿澶氾紝浠庤€岃繑鍥炴洿灝戠殑鏁版嵁琛屻€?/p>

 

緇濆ぇ澶氭暟鎯呭喌涓嬶紝鏌ヨ浼樺寲鍣ㄤ細瀵硅繛鎺ヨ繘琛屽垎鏋愶紝鎸夋渶鏈夋晥鐜囩殑欏哄簭錛屼嬌鐢ㄦ渶鏈夋晥鐜囩殑榪炴帴綾誨瀷鏉ュ鏁版嵁琛ㄨ繘琛岃繛鎺ャ€備絾騫朵笉鎬繪槸濡傛銆傚湪鍥懼艦鎵ц璁″垝涓綘鍙互鐪嬪埌浠h〃鏌ヨ鎵€浣跨敤鍒扮殑鍚勭涓嶅悓榪炴帴綾誨瀷鐨勫浘鏍囥€傛澶栵紝姣忎釜榪炴帴鍥炬爣閮芥湁涓や釜綆ご鎸囧悜瀹冦€傛寚鍚戣繛鎺ュ浘鏍囩殑涓婇潰鐨勭澶翠唬琛ㄨ榪炴帴鐨勫閮ㄨ〃錛屼笅闈㈢殑綆ご鍒欎唬琛ㄨ繖涓繛鎺ョ殑鍐呴儴琛ㄣ€傜澶寸殑鍙︿竴澶村垯鎸囧悜琚繛鎺ョ殑鏁版嵁琛ㄥ悕銆?/p>

 


鏈夋椂鍦ㄥ琛ㄨ繛鎺ョ殑鏌ヨ涓紝綆ご鐨勫彟涓€澶存寚鍚戠殑騫朵笉鏄竴涓暟鎹〃錛岃€屾槸鍙︿竴涓繛鎺ャ€傚鏋滃皢榧犳爣縐誨埌鎸囧悜澶栭儴榪炴帴涓庡唴閮ㄨ繛鎺ョ殑綆ご涓婏紝灝卞彲浠ョ湅鍒頒竴涓脊鍑哄紡紿楀彛錛屽憡璇変綘鏈夊灝戞暟鎹琚彂閫佽嚦榪欎釜榪炴帴鏉ヨ繘琛屽鐞嗐€傚閮ㄨ〃搴旇鎬繪槸姣斿唴閮ㄨ〃鍚湁鏇村皯鐨勬暟鎹銆傚鏋滀笉鏄紝鍒欒鏄庢煡璇紭鍖栧櫒鎵€閫夋嫨鐨勮繛鎺ラ『搴忓彲鑳戒笉姝g‘(涓嬮潰鏄叧浜庤繖涓瘽棰樼殑鏇村淇℃伅)銆?/p>

 


棣栧厛錛岃鎴戜滑鏉ョ湅鐪嬭繛鎺ョ被鍨嬨€係QL Server鍙互浣跨敤涓夌涓嶅悓鐨勬妧鏈潵榪炴帴璧勬枡琛細宓屽寰幆(nested loop)錛屾暎鍒?hash)錛屼互鍙婂悎騫?merge)銆備竴鑸潵璇達紝宓屽寰幆鏄渶蹇殑榪炴帴綾誨瀷錛屼絾濡傛灉涓嶅彲鑳戒嬌鐢ㄥ祵濂楀驚鐜殑璇濓紝鍒欎細鐢ㄥ埌鏁e垪鎴栬€呭悎騫朵綔涓哄悎閫傜殑榪炴帴綾誨瀷銆備袱鑰呴兘姣斿祵濂楀驚鐜繛鎺ユ參銆?/p>

 


褰撹繛鎺ュぇ琛ㄦ椂錛屽垯鍚堝茍榪炴帴鍙兘鏄渶浣抽€夐」錛岃€岄潪宓屽寰幆榪炴帴銆傚敮涓€鐨勬槑紜繖涓€鐐圭殑鏂瑰紡鏄涓よ€呴兘榪涜嫻嬭瘯浠ユ煡鐪嬪摢涓€涓渶鏈夋晥鐜囥€?/p>

 


濡傛灉浣犳€€鐤戞煇涓煡璇㈤€熷害鎱㈢殑鍘熷洜鍙兘鏄洜涓哄畠鎵€浣跨敤鐨勮繛鎺ョ被鍨嬩笉鐞嗘兂錛岄偅涔堜綘鍙互浣跨敤榪炴帴鎻愮ず鏉ュ鐩栨煡璇紭鍖栧櫒鐨勯€夋嫨銆傚湪浣跨敤榪炴帴鎻愮ず涔嬪墠錛屼綘闇€瑕佽姳璐逛竴浜涙椂闂村幓浜嗚В涓€涓嬫瘡縐嶈繛鎺ョ被鍨嬩互鍙婂畠浠殑宸ヤ綔鏂瑰紡銆傝繖鏄竴涓鏉傜殑璇濋錛岃秴鍑轟簡鏈枃鐨勮璁鴻寖鍥淬€?/p>

 


鏌ヨ浼樺寲鍣ㄩ€夋嫨鏈€鏈夋晥鐜囩殑榪炴帴綾誨瀷鏉ヨ繛鎺ユ暟鎹〃銆備緥濡傦紝宓屽寰幆榪炴帴鐨勫閮ㄨ〃搴旇鏄繛鎺ョ殑涓や釜琛ㄤ腑杈冨皬鐨勯偅涓〃銆傛暎鍒楄繛鎺ヤ篃鏄竴鏍鳳紝瀹冪殑澶栭儴琛ㄥ簲璇ユ槸杈冨皬鐨勯偅涓〃銆傚鏋滀綘瑙夊緱鏌ヨ浼樺寲鍣ㄩ€夋嫨鐨勮繛鎺ラ『搴忔槸閿欒鐨勶紝鍙互浣跨敤榪炴帴鎻愮ず鏉ュ鐩栧畠銆?/p>

 

浣犲父甯鎬細鍦ㄥ浘褰㈡墽琛岃鍒掍笂鐪嬪埌鏍囪瘑鎴?#8221;涔︾鏌ユ壘(Bookmark Lookup)”鐨勫浘鏍囥€備功絳炬煡鎵劇浉褰撳父瑙併€備功絳炬煡鎵劇殑鏈川鏄憡璇変綘鏌ヨ澶勭悊鍣ㄥ繀欏諱粠鏁版嵁琛ㄦ垨鑰呰仛闆嗙儲寮曚腑鏉ユ煡鎵懼畠鎵€闇€瑕佺殑鏁版嵁琛岋紝鑰屼笉鏄粠闈炶仛闆嗙儲寮曚腑鐩存帴璇誨彇銆?/p>

 


鎵撴瘮鏂硅錛屽鏋滀竴涓煡璇㈣鍙ョ殑SELECT,JOIN浠ュ強WHERE瀛愬彞涓殑鎵€鏈夊瓧孌碉紝閮戒笉瀛樺湪浜庨偅涓敤鏉ュ畾浣嶇鍚堟煡璇㈡潯浠剁殑鏁版嵁琛岀殑闈炶仛闆嗙儲寮曚腑錛岄偅涔堟煡璇紭鍖栧櫒灝變笉寰椾笉鍋氶澶栫殑宸ヤ綔鍦ㄦ暟鎹〃鎴栬仛闆嗙儲寮曚腑鏌ユ壘閭d簺婊¤凍榪欎釜鏌ヨ璇彞鐨勫瓧孌點€?/p>

 


鍙︿竴縐嶅紩璧蜂功絳炬煡鎵劇殑鍘熷洜鏄嬌鐢ㄤ簡SELECT *銆傜敱浜庡湪緇濆ぇ澶氭儏鍐典笅瀹冧細榪斿洖姣斾綘瀹為檯鎵€闇€鏇村鐨勬暟鎹紝鎵€浠ュ簲璇ユ案涓嶄嬌鐢⊿ELECT *.

 


浠庢€ц兘鏂歸潰鏉ヨ錛屼功絳炬煡鎵炬槸涓嶇悊鎯崇殑銆傚洜涓哄畠浼氳姹傞澶栫殑I/O寮€閿€鍦ㄥ瓧孌典腑鏌ユ壘浠ヨ繑鍥炴墍闇€鐨勬暟鎹銆?/p>

 


濡傛灉璁や負涔︾鏌ユ壘闃茬浜嗘煡璇㈢殑鎬ц兘錛岄偅涔堟湁鍥涚閫夋嫨鍙互鐢ㄦ潵閬垮厤瀹冿細鍙互寤虹珛WHERE瀛愬彞浼氱敤鍒扮殑鑱氶泦绱㈠紩錛屽埄鐢ㄧ儲寮曚氦闆嗙殑浼樺娍錛屽緩绔嬭鐩栫殑闈炶仛闆嗙儲寮曪紝鎴栬€?濡傛灉鏄疭QL Server 2000/2005浼佷笟鐗堢殑璇?鍙互寤虹珛绱㈠紩瑙嗗浘銆傚鏋滆繖浜涢兘涓嶅彲鑳斤紝鎴栬€呬嬌鐢ㄥ畠浠腑鐨勪換浣曚竴涓兘浼氳€楃敤姣斾功絳炬煡鎵炬洿澶氱殑璧勬簮錛岄偅涔堜功絳炬煡鎵懼氨鏄渶浣崇殑閫夋嫨浜嗐€俒


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/xiao_hn/archive/2009/06/11/4259628.aspx



]]>
SQLserver閿佸拰浜嬪姟闅旂綰у埆鐨勬瘮杈冧笌浣跨敤http://www.aygfsteel.com/tinysun/archive/2010/02/04/311962.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Thu, 04 Feb 2010 07:01:00 GMThttp://www.aygfsteel.com/tinysun/archive/2010/02/04/311962.htmlhttp://www.aygfsteel.com/tinysun/comments/311962.htmlhttp://www.aygfsteel.com/tinysun/archive/2010/02/04/311962.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/311962.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/311962.html瀵硅薄

鈶?span style="font: 7pt Times New Roman">     閿?/strong>錛氭瘡鏉?/span>SQL璇彞

鈶?span style="font: 7pt Times New Roman">     闅旂錛氫簨鍔?/span>

閿?/strong>

鈶?/span>

騫跺彂闂

涓㈠け鏇存柊

鏈‘璁ょ殑璇誨彇錛堣剰璇伙級

涓嶄竴鑷寸殑鍒嗘瀽錛堥潪閲嶅璇伙級錛氬嬈¤鍙栫浉鍚岀殑鏁版嵁錛堣錛変笉涓€鑷達紙鍏朵粬鐢ㄦ埛鏇存敼update錛?/span>

騫誨儚璇伙細澶氭璇誨彇鏈変笉瀛樺湪鍜屾柊澧炵殑鏁版嵁錛堝叾浠栫敤鎴鋒彃鍏?/span>insert鎴栧垹闄?/span>delete錛?/span>

闅旂綰у埆

闅旂綰у埆

鑴忚

涓嶅彲閲嶅璇誨彇

騫誨儚

璇存槑

鏈彁浜よ(read uncommitted)

鏄?/span>

鏄?/span>

鏄?/span>

濡傛灉鍏朵粬浜嬪姟鏇存柊錛屼笉綆℃槸鍚︽彁浜わ紝绔嬪嵆鎵ц

鎻愪氦璇?span>(read committed榛樿)

鍚?/span>

鏄?/span>

鏄?/span>

璇誨彇鎻愪氦榪囩殑鏁版嵁銆傚鏋滃叾浠栦簨鍔℃洿鏂版病鎻愪氦錛屽垯絳夊緟

鍙噸澶嶈(repeatable read)

鍚?/span>

鍚?/span>

鏄?/span>

鏌ヨ鏈熼棿錛屼笉鍏佽鍏朵粬浜嬪姟update

鍙覆琛岃(serializable)

鍚?/span>

鍚?/span>

鍚?/span>

鏌ヨ鏈熼棿錛屼笉鍏佽鍏朵粬浜嬪姟insert鎴杁elete

鎻愪氦璇?/span>

鍋囪瀛樺湪琛?/span>A錛屽涓嬫墍紺?/span>

A1

A2

A3

11

21

31

12

22

32

鎵撳紑鏌ヨ鍒嗘瀽鍣ㄥ茍鎵撳紑涓や釜榪炴帴錛屽垎鍒緭鍏ュ涓嬩袱涓簨鍔★細

--浜嬪姟鈪?/span>

SET TRANSACTION ISOLATION LEVEL READ Committed

begin tran

update A set A2 = 20 where A1 = 11

waitfor delay '00:00:10'

rollback tran

--浜嬪姟鈪?/span>

SET TRANSACTION ISOLATION LEVEL READ Committed

select * from A where A1 = 11

濡傛灉鍏堣繍琛屼簨鍔♀厾錛岀劧鍚庣揣鎺ョ潃榪愯浜嬪姟鈪★紝鍒欎簨鍔♀叀瑕佺瓑寰?/span>10縐掗挓錛?/span>涓€涓繛鎺ュ湪淇敼鏁版嵁鍧楁椂鍒殑榪炴帴涔熶笉鑳芥煡璇㈣繖涓暟鎹潡錛岀洿鍒拌В閿?/strong>銆傚弽涔嬩害鐒訛細璇葷殑鏃跺€欎笉鑳藉啓鍜屼慨鏀?/span>錛夈€?/span>

濡傛灉鎶婁簨鍔♀叀鏀逛負濡備笅

SET TRANSACTION ISOLATION LEVEL READ UNCommitted

select * from A where A1 = 11

閭d箞浜嬪姟鈪′笉闇€絳夊緟錛岀珛鍗蟲墽琛岋紙鍙互鐪嬪嚭READ UNCommitted浜嬪姟select涓嶅鏁版嵁鍙戝嚭鍏變韓閿?/strong>錛?/span>

閿?/strong>錛?/span>(榪欓噷涓昏璁茶В 鍏變韓閿?/strong> 鍜?/span> 鎺掍粬閿?/strong> 涓ょ緇忓父鐢ㄥ埌鐨?strong style="background-color: #99ff99; color: black">閿?/strong>)

鍏變韓閿?/strong>涓昏鏄負浜嗗叡浜錛?/span>select錛夛紝濡傛灉瀛樺湪浜嬪姟錛堜竴涓垨澶氫釜錛夋嫢鏈夊琛ㄤ腑鏁版嵁錛堝叧浜?strong style="background-color: #99ff99; color: black">閿?/strong>鏁版嵁鐨勫灝戯紝瑙?strong style="background-color: #99ff99; color: black">閿?/strong>鐨勭矑搴﹁€屽畾錛夌殑鍏變韓閿?/strong>錛屼笉鍏佽瀵?strong style="background-color: #99ff99; color: black">閿?/strong>瀹氱殑鏁版嵁榪涜鏇存柊(update)錛堜粠閿?/strong>鐨勮搴﹁錛屽嵆涓嶅厑璁鎬簨鍔¤幏鍙栨帓浠?strong style="background-color: #99ff99; color: black">閿?/strong>錛岃絳夊埌鎵€鏈夌殑鍏變韓閿?/strong>閮介噴鏀炬帀錛夈€傚弽涔嬶紝濡傛灉浜嬪姟瀵規暟鎹凡緇忓叿鏈夋帓浠?strong style="background-color: #99ff99; color: black">閿?/strong>錛堝彧鑳芥湁涓€涓級錛屽叾浠栫殑浜嬪姟灝變笉鑳藉閿?/strong>瀹氱殑鏁版嵁鑾峰彇鍏變韓閿?/strong>鍜屾帓浠?strong style="background-color: #99ff99; color: black">閿?/strong>錛堝嵆鎺掍粬閿?/strong>涓庡叡浜?strong style="background-color: #99ff99; color: black">閿?/strong>涓嶈兘鍏煎錛屾洿澶氫俊鎭鏌ョ湅閿?/strong>鍏煎鎬?/span>錛夛紝鍦ㄦ鐗瑰埆寮鴻皟涓€涓?/span> 閿?/strong>瀹氱殑鏁版嵁 錛屽洜涓烘湁鐨勮祫鏂欎笂璁茶В鍒?/span>“涓€涓繛鎺ュ啓鐨勬椂鍊欙紝鍙︿竴涓繛鎺ュ彲浠ュ啓”錛屽疄闄呬笂鍐欑殑榪欑鎯呭喌鏄悇涓繛鎺ョ殑璇誨啓鐨勬暟鎹笉鏄浉鍚岀殑琛岋紝涔熷氨鏄鍚勪釜榪炴帴閿?/strong>瀹氱殑鏁版嵁涓嶅悓銆?/span>

鏍規嵁浠ヤ笂鍒嗘瀽錛屾垜浠€葷粨涓哄叚涓瓧涓?#8220;鍏變韓璇伙紝鎺掍粬鍐?/span>”銆?/span>

浜嗚В浜?strong style="background-color: #99ff99; color: black">閿?/strong>鐨勬儏鍐典箣鍚庯紝鍙堟秹鍙婂埌涓€涓棶棰樸€備簨鍔$┒绔熻淇濇寔閿?/strong>澶氫箙鍛?/span>?

涓€鑸潵璇達紝鍏變韓閿?/strong>鐨?strong style="background-color: #99ff99; color: black">閿?/strong>瀹氭椂闂翠笌浜嬪姟鐨?strong style="background-color: #ffff66; color: black">闅旂綰у埆鏈夊叧錛屽鏋?strong style="background-color: #ffff66; color: black">闅旂綰у埆涓?/span>Read Committed鐨勯粯璁ょ駭鍒紝鍙湪璇誨彇(select)鐨勬湡闂翠繚鎸?strong style="background-color: #99ff99; color: black">閿?/strong>瀹氾紝鍗沖湪鏌ヨ鍑烘暟鎹互鍚庡氨閲婃斁浜?strong style="background-color: #99ff99; color: black">閿?/strong>錛涘鏋?strong style="background-color: #ffff66; color: black">闅旂綰у埆涓烘洿楂樼殑Repeatable read鎴?/span>Serializable錛岀洿鍒頒簨鍔$粨鏉熸墠閲婃斁閿?/strong>銆傚彟璇存槑錛屽鏋?/span>select璇彞涓寚瀹氫簡HoldLock鎻愮ず錛屽垯涔熻絳夊埌浜嬪姟緇撴潫鎵嶉噴鏀?strong style="background-color: #99ff99; color: black">閿?/strong>銆?/span>

鎺掍粬閿?/strong>鐩村埌浜嬪姟緇撴潫鎵嶉噴鏀俱€?/span>

鍋氬嚭浜嗕互涓婂垎鏋愶紝鐜板湪鎴戜滑鍙兘浼氬瓨鍦ㄨ繖鏍風殑鐤戦棶錛屽埌搴曞湪鎵цSQL璇彞鐨勬椂鍊欏彂鍑轟粈涔堟牱鐨?strong style="background-color: #99ff99; color: black">閿?/strong>鍛紝榪欏氨鐢變簨鍔$殑闅旂綰у埆鍐沖畾浜嗐€備竴鑸儏鍐碉紝璇昏鍙?/span>(select)鍙戝嚭鍏變韓閿?/strong>錛屽啓璇彞(update,insert,delete)鍙戝嚭鎺掍粬閿?/strong>銆備絾鏄紝濡傛灉榪欐牱涓嶈兘婊¤凍鎴戜滑鐨勮姹傛€庝箞鍔炲憿錛屾湁娌℃湁鏇村閫夋嫨鍛紝鍒€ワ紝SQLserver涓烘垜浠彁渚涗簡閿?/strong>瀹氭彁紺虹殑姒傚康銆?/span>

       閿?/strong>瀹氭彁紺哄SQL璇彞榪涜鐗瑰埆鎸囧畾錛岃繖涓寚瀹氬皢瑕嗙洊浜嬪姟鐨?strong style="background-color: #ffff66; color: black">闅旂綰у埆銆備笅闈㈠鍚勪釜閿?/strong>瀹氭彁紺哄垎鍒簣浠ヤ粙緇嶏紙鏇村璧勬枡璇鋒煡鐪?/span>SQLserver鐨勮仈鏈哄府鍔╋級錛岀瑪鑰呭仛鍑轟簡浠ヤ笅鍒嗙被銆?/span>

綾誨瀷1

鈶?span style="font: 7pt Times New Roman">     READUNCOMMITTED錛氫笉鍙戝嚭閿?/strong>

鈶?span style="font: 7pt Times New Roman">     READCOMMITTED錛氬彂鍑哄叡浜?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼繚鎸佸埌璇誨彇緇撴潫

鈶?span style="font: 7pt Times New Roman">     REPEATABLEREAD錛氬彂鍑哄叡浜?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼繚鎸佸埌浜嬪姟緇撴潫

鈶?span style="font: 7pt Times New Roman">     SERIALIZABLE錛氬彂鍑哄叡浜?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼繚鎸佸埌浜嬪姟緇撴潫

綾誨瀷2

鈶?span style="font: 7pt Times New Roman">     NOLOCK錛氫笉鍙戝嚭閿?/strong>銆傜瓑鍚屼簬READUNCOMMITTED

鈶?span style="font: 7pt Times New Roman">     HOLDLOCK錛氬彂鍑哄叡浜?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼繚鎸佸埌浜嬪姟緇撴潫銆傜瓑鍚屼簬SERIALIZABLE

鈶?span style="font: 7pt Times New Roman">     XLOCK錛氬彂鍑烘帓浠?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼繚鎸佸埌浜嬪姟緇撴潫銆?/span>

鈶?span style="font: 7pt Times New Roman">     UPDLOCK錛氬彂鍑烘洿鏂?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼繚鎸佸埌浜嬪姟浜嬪姟緇撴潫銆傦紙鏇存柊閿?/strong>錛氫笉闃誨鍒殑浜嬬墿錛屽厑璁稿埆鐨勪簨鐗╄鏁版嵁錛堝嵆鏇存柊閿?/strong>鍙笌鍏變韓閿?/strong>鍏煎錛夛紝浣嗕粬紜繚鑷笂嬈¤鍙栨暟鎹悗鏁版嵁娌℃湁琚洿鏂?/span>錛?/span>

鈶?span style="font: 7pt Times New Roman">     READPAST錛氬彂鍑哄叡浜?strong style="background-color: #99ff99; color: black">閿?/strong>錛屼絾璺寵繃閿?/strong>瀹氳錛屽畠涓嶄細琚樆濉炪€?span style="color: red">閫傜敤鏉′歡錛氭彁浜よ鐨?strong style="background-color: #ffff66; color: black">闅旂綰у埆錛岃綰?strong style="background-color: #99ff99; color: black">閿?/strong>錛?/span>select璇彞涓€?/span>

綾誨瀷3

鈶?span style="font: 7pt Times New Roman">     ROWLOCK錛氳綰?strong style="background-color: #99ff99; color: black">閿?/strong>

鈶?span style="font: 7pt Times New Roman">     PAGLOCK錛氶〉綰?strong style="background-color: #99ff99; color: black">閿?/strong>

鈶?span style="font: 7pt Times New Roman">     TABLOCK錛氳〃閿?/strong>

鈶?span style="font: 7pt Times New Roman">     TABLOCKX錛氳〃鎺掍粬閿?/strong>

璁茶В瀹?strong style="background-color: #99ff99; color: black">閿?/strong>鍚庯紝涓嬮潰緇撳悎涓€涓叿浣撳疄渚嬶紝鍏蜂綋鐪嬩竴涓?strong style="background-color: #99ff99; color: black">閿?/strong>鐨勪嬌鐢ㄣ€?/span>

       鍦ㄥ緢澶氱郴緇熶腑錛岀粡甯鎬細閬囧埌榪欑鎯呭喌錛岃淇濇寔涓€涓紪鍙風殑鍞竴錛屽浼氳杞歡涓殑鍑瘉鐨勭紪鍙楓€備竴縐嶇紪鍙風殑澶勭悊鏄繖鏍風殑錛屾妸琛ㄤ腑鐨勬渶澶х紪鍙蜂繚瀛樺埌琛ㄤ腑錛岀劧鍚庡湪榪欎釜緙栧彿涓婄瘡鍔狅紝褰㈡垚鏂扮殑緙栧彿銆傝繖涓繃紼嬪騫跺彂澶勭悊瑕佹眰闈炲父楂橈紝涓嬮潰鎴戜滑灝辨潵妯℃嫙榪欎釜榪囩▼錛岀湅濡備綍淇濇寔緙栧彿鐨勫敮涓€鎬с€?/span>

       鏂板緩涓€寮犺〃code鏉ヤ繚瀛樺嚟璇佺殑鏈€澶х紪鍙楓€傚瓧孌靛涓嬶細緙栧彿:bh(numeric(18,0)),鍑瘉琛ㄥ悕pinzheng(varchar(50))

鍋囪琛ㄤ腑鏈夎繖鏍風殑涓€鏉¤褰曪細

Bh

Pinzheng

18000

浼氳鍑瘉

 

鏂板緩涓€涓瓨鍌ㄨ繃紼嬫潵鐢熸垚鏂扮殑鍑瘉緙栧彿錛屽涓嬶細

CREATE PROCEDURE up_getbh  AS

       Begin Tran

              Declare @numnewbh numeric(18,0)

              select  @numnewbh = bh FROM code  WITH (UPDLOCK,ROWLOCK) where pinzheng = '浼氳鍑瘉'

              set @numnewbh = @numnewbh + 1

              update code set  bh = @numnewbh where pinzheng = '浼氳鍑瘉'

              print @numnewbh

       Commit tran

GO

鐒跺悗錛屾墦寮€鏌ヨ鍒嗘瀽鍣紝騫跺寮€鍑犱釜榪炴帴錛堢瑪鑰呭紑浜?/span>8涓繛鎺ワ紝妯℃嫙鏈?/span>8涓漢鍚屾椂騫跺彂錛岃鑰呭彲浠ュ紑鏇村鐨勮繛鎺ヨ繘琛岃瘯楠岋級錛屾妸綾諱技浠ヤ笅榪欐牱鐨勮鍙ュ鍒跺埌姣忎釜榪炴帴紿楀彛涓紝

declare @i numeric(18,0)

set @i = 1

while @i = 1

Begin

       if getdate() > '2004-07-22 14:23'  --璁懼畾涓€涓椂闂達紝鍒版鏃墮棿鍚屾椂鎵цupgetbh瀛樺偍榪囩▼

              set @i = 0      

end

exec up_getbh

鐒跺悗錛屾帴榪炶繍琛屽悇涓繛鎺ワ紝鍒?/span>2004-7-22 14錛?/span>23 榪欎竴鍒伙紝鍚勪釜榪炴帴鍚屾椂榪愯up_getbh銆備粠榪愯緇撴灉鍙互鐪嬪嚭榪炴帴欏哄簭鍑虹幇18001寮€濮嬩釜鏁板瓧錛屽茍娌℃湁閲嶅彿鎴栦涪鍙風殑鐜拌薄銆?/span>

鍒嗘瀽錛氱敱浜?/span>up_getbh涓殑select璇彞浣跨敤浜嗘洿鏂?strong style="background-color: #99ff99; color: black">閿?/strong>錛屽洜鏇存柊閿?/strong>涔嬮棿涓嶈兘鍏煎錛屾墍浠ュ悇涓繛鎺ヨ絳夊埌鎵€鏈夊叾浠栫殑榪炴帴閲婃斁鎺?strong style="background-color: #99ff99; color: black">閿?/strong>鎵嶈兘鎵ц錛岃€屾洿鏂?strong style="background-color: #99ff99; color: black">閿?/strong>鐨勯噴鏀捐絳夊埌浜嬪姟緇撴潫錛岃繖鏍峰氨涓嶄細鍙戠敓鍙峰嚭閿欑殑鐜拌薄浜嗐€?/span>



]]>
Sql Server 閿佹満鍒?http://www.aygfsteel.com/tinysun/archive/2010/02/04/311956.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Thu, 04 Feb 2010 06:38:00 GMThttp://www.aygfsteel.com/tinysun/archive/2010/02/04/311956.htmlhttp://www.aygfsteel.com/tinysun/comments/311956.htmlhttp://www.aygfsteel.com/tinysun/archive/2010/02/04/311956.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/311956.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/311956.html杞嚜錛?a >http://blog.csdn.net/missmecn/archive/2008/10/06/3019798.aspx
 
瀵?span class="hilite3">閿佹満鍒?/font>鐨勭爺絀惰鍏峰涓や釜鏉′歡錛?
1錛庢暟鎹噺澶?
2錛庡涓敤鎴峰悓鏃跺茍鍙?
濡傛灉緙哄皯榪欎袱涓潯浠訛紝鏁版嵁搴撲笉瀹規槗浜х敓姝婚攣闂銆傜爺絀惰搗鏉ュ彲鑳戒細浜嬪€嶅姛鍗娿€傚鏋滆繖涓や釜鏉′歡閮芥湁錛屼絾浣犺繕鏄寜鏁版嵁搴撶己鐪佽緗潵澶勭悊鏁版嵁錛屽垯浼氬甫鏉ュ緢澶氱殑闂錛屾瘮濡傦細
1錛変涪澶辨洿鏂?
A,B涓や釜鐢ㄦ埛璇誨悓涓€鏁版嵁騫惰繘琛屼慨鏀?鍏朵腑涓€涓敤鎴風殑淇敼緇撴灉鐮村潖浜嗗彟涓€涓慨鏀圭殑緇撴灉
2錛夎剰璇?
A鐢ㄦ埛淇敼浜嗘暟鎹椂,B鐢ㄦ埛涔熷湪璇昏鏁版嵁,浣咥鐢ㄦ埛鍥犱負鏌愪簺鍘熷洜鍙栨秷浜嗗鏁版嵁鐨勪慨鏀?鏁版嵁鎭㈠鍘熷€?姝ゆ椂B寰楀埌鐨勬暟鎹氨涓庢暟鎹簱鍐呯殑鏁版嵁浜х敓浜嗕笉涓€鑷?
3錛変笉鍙噸澶嶈
B鐢ㄦ埛璇誨嚭璇ユ暟鎹茍淇敼,鍚屾椂錛孉鐢ㄦ埛涔熷湪璇誨彇鏁版嵁錛屾鏃禔鐢ㄦ埛鍐嶈鍙栨暟鎹椂鍙戠幇鍓嶅悗涓ゆ鐨勫€間笉涓€鑷?
SQL SERVER 浣滀負澶氱敤鎴鋒暟鎹簱緋葷粺錛屼互浜嬪姟涓哄崟浣嶏紝浣跨敤閿佹潵瀹炵幇騫跺彂鎺у埗銆?span class="hilite1">SQLSERVER浣跨敤“閿?#8221;紜繚浜嬪姟瀹屾暣鎬у拰鏁版嵁涓€鑷存€с€?

涓€銆侀攣鐨勬蹇?/strong>
閿侊紙LOCKING錛夋槸鏈€甯哥敤鐨勫茍鍙戞帶鍒舵満鏋勩€傛槸闃叉鍏朵粬浜嬪姟璁塊棶鎸囧畾鐨勮祫婧愭帶鍒躲€佸疄鐜板茍鍙戞帶鍒剁殑涓€縐嶄富瑕佹墜孌點€傞攣鏄簨鍔″鏌愪釜鏁版嵁搴撲腑鐨勮祫婧愶紙濡傝〃鍜岃褰曪級瀛樺彇鍓嶏紝鍏堝悜緋葷粺鎻愬嚭璇鋒眰錛屽皝閿佽璧勬簮錛屼簨鍔¤幏寰楅攣鍚庯紝鍗沖彇寰楀鏁版嵁鐨勬帶鍒舵潈錛屽湪浜嬪姟閲婃斁瀹冪殑閿佷箣鍓嶏紝鍏朵粬浜嬪姟涓嶈兘鏇存柊姝ゆ暟鎹€傚綋浜嬪姟鎾ゆ秷鍚庯紝閲婃斁琚攣瀹氱殑璧勬簮銆?
褰撲竴涓敤鎴烽攣浣忔暟鎹簱涓殑鏌愪釜瀵硅薄鏃訛紝鍏朵粬鐢ㄦ埛灝變笉鑳藉啀璁塊棶璇ュ璞?

浜屻€侀攣鐨勭矑搴?/strong>
SQL Server 2000 鍏鋒湁澶氱矑搴﹂攣瀹氾紝鍏佽涓€涓簨鍔¢攣瀹氫笉鍚岀被鍨嬬殑鐨勮祫婧愩€備負浜嗕嬌閿佸畾鐨勬垚鏈噺鑷蟲渶灝戯紝SQL Server 鑷姩灝嗚祫婧愰攣瀹氬湪閫傚悎浠誨姟鐨勭駭鍒€傞攣瀹氬湪杈冨皬鐨勭矑搴︼紙渚嬪琛岋級鍙互澧炲姞騫跺彂浣嗛渶瑕佽緝澶х殑寮€閿€錛屽洜涓哄鏋滈攣瀹氫簡璁稿琛岋紝鍒欓渶瑕佹帶鍒舵洿澶氱殑閿併€傞攣瀹氬湪杈冨ぇ鐨勭矑搴︼紙渚嬪琛級灝卞茍鍙戣€岃█鏄浉褰撴槀璐電殑錛屽洜涓洪攣瀹氭暣涓〃闄愬埗浜嗗叾瀹冧簨鍔″琛ㄤ腑浠繪剰閮ㄥ垎榪涜璁塊棶錛屼絾瑕佹眰鐨勫紑閿€杈冧綆錛屽洜涓洪渶瑕佺淮鎶ょ殑閿佽緝灝戙€?span class="hilite1">SQL Server 鍙互閿佸畾琛屻€侀〉銆佹墿灞曠洏鍖恒€佽〃銆佸簱絳夎祫婧愩€?
  • 璧勬簮 綰у埆 鎻忚堪
  • RID 琛岄攣 琛ㄤ腑鐨勫崟涓
  • Key 琛岀駭閿?绱㈠紩涓殑琛?
  • Page 欏電駭閿?涓€涓暟鎹〉鎴栬€呯儲寮曢〉
  • Extent 欏電駭閿?涓€緇勬暟鎹〉鎴栬€呯儲寮曢〉
  • Table 琛ㄧ駭閿?鏁翠釜琛?
  • Database 鏁版嵁搴撶駭閿?鏁翠釜鏁版嵁搴?

閫夋嫨澶氬ぇ鐨勭矑搴︼紝鏍規嵁瀵規暟鎹殑鎿嶄綔鑰屽畾銆傚鏋滄槸鏇存柊琛ㄤ腑鎵€鏈夌殑琛岋紝鍒欑敤琛ㄧ駭閿?濡傛灉鏄洿鏂拌〃涓殑鏌愪竴琛岋紝鍒欑敤琛岀駭閿併€?
琛岀駭閿佹槸涓€縐嶆渶浼橀攣錛屽洜涓鴻綰ч攣涓嶅彲鑳藉嚭鐜版暟鎹棦琚崰鐢ㄥ張娌℃湁浣跨敤鐨勬氮璐圭幇璞°€備絾鏄紝濡傛灉鐢ㄦ埛浜嬪姟涓綣佸鏌愪釜琛ㄤ腑鐨勫鏉¤褰曟搷浣滐紝灝嗗鑷村璇ヨ〃鐨勮澶氳褰曡閮藉姞涓婁簡琛岀駭閿侊紝鏁版嵁搴撶郴緇熶腑閿佺殑鏁扮洰浼氭€ュ墽澧炲姞錛岃繖鏍峰氨鍔犻噸浜嗙郴緇熻礋鑽鳳紝褰卞搷緋葷粺鎬ц兘銆傚洜姝わ紝鍦?span class="hilite1">SQL Server涓紝榪樻敮鎸侀攣鍗囩駭(lock escalation)銆?
鎵€璋撻攣鍗囩駭鏄寚璋冩暣閿佺殑綺掑害錛屽皢澶氫釜浣庣矑搴︾殑閿佹浛鎹㈡垚灝戞暟鐨勬洿楂樼矑搴︾殑閿侊紝浠ユ鏉ラ檷浣庣郴緇熻礋鑽楓€傚湪SQL Server涓綋涓€涓簨鍔′腑鐨勯攣杈冨錛岃揪鍒伴攣鍗囩駭闂ㄩ檺鏃訛紝緋葷粺鑷姩灝嗚綰ч攣鍜岄〉闈㈤攣鍗囩駭涓鴻〃綰ч攣銆?
鐗瑰埆鍊煎緱娉ㄦ剰鐨勬槸錛屽湪SQL Server涓紝閿佺殑鍗囩駭闂ㄩ檺浠ュ強閿佸崌綰ф槸鐢辯郴緇熻嚜鍔ㄦ潵紜畾鐨勶紝涓嶉渶瑕佺敤鎴瘋緗€?

涓夈€侀攣鐨勬ā寮?/strong>
閿佹ā寮忎互鍙婃弿榪拌〃

    閿佹ā寮?鎻忚堪
  • 鍏變韓錛圫錛?鐢ㄤ簬涓嶆洿鏀規垨涓嶆洿鏂版暟鎹紙鍙鎿嶄綔錛夛紝濡係ELECT璇彞
  • 鏇存柊錛圲錛?鐢ㄤ簬鍙洿鏂扮殑璧勬簮涓€傞槻姝㈠綋澶氫釜浼氳瘽鍦ㄨ鍙栥€侀攣瀹氫互鍙婇殢鍚庡彲鑳借繘琛岀殑璧勬簮鏇存柊鏃跺彂鐢熷父瑙佸艦寮忕殑姝婚攣銆?
  • 鎺掑畠錛圶錛?鐢ㄤ簬鏁版嵁淇敼鎿嶄綔錛屼緥濡?INSERT銆乁PDATE鎴朌ELETE銆傜‘淇濅笉浼氬悓鏃跺鍚屼竴璧勬簮榪涜澶氶噸鏇存柊
  • 鎰忓悜 褰?Microsoft SQL Server 鏁版嵁搴撳紩鎿庤幏鍙栦綆綰у埆鐨勯攣鏃訛紝瀹冭繕灝嗗湪鍖呭惈鏇翠綆綰у埆瀵硅薄鐨勫璞′笂鏀劇疆鎰忓悜閿?渚嬪錛?褰撻攣瀹氳鎴栫儲寮曢敭鑼冨洿鏃訛紝鏁版嵁搴撳紩鎿庡皢鍦ㄥ寘鍚鎴栭敭鐨勯〉涓婃斁緗剰鍚戦攣銆傚綋閿佸畾欏墊椂錛屾暟鎹簱寮曟搸灝嗗湪鍖呭惈欏電殑鏇撮珮綰у埆鐨勫璞′笂鏀劇疆鎰忓悜閿併€?
    鎰忓悜閿佺殑綾誨瀷涓猴細鎰忓悜鍏變韓錛圛S錛夈€佹剰鍚戞帓瀹冿紙IX錛変互鍙婃剰鍚戞帓瀹冨叡浜紙SIX錛?
  • 鏋舵瀯 鍦ㄦ墽琛屼緷璧栦簬琛ㄦ灦鏋勭殑鎿嶄綔鏃朵嬌鐢ㄣ€傛灦鏋勯攣鐨勭被鍨嬩負錛氭灦鏋勪慨鏀癸紙Sch-M錛夊拰鏋舵瀯紼沖畾錛圫ch-S錛?
  • 澶у閲忔洿鏂幫紙BU錛?鍚戣〃涓ぇ瀹歸噺澶嶅埗鏁版嵁騫舵寚瀹氫簡TABLOCK鎻愮ず鏃朵嬌鐢?



鍥?SQL Server 涓攣鐨勮緗?/strong>
1 澶勭悊姝婚攣鍜岃緗閿佷紭鍏堢駭
姝婚攣灝辨槸澶氫釜鐢ㄦ埛鐢寵涓嶅悓灝侀攣,鐢變簬鐢寵鑰呭潎鎷ユ湁涓€閮ㄥ垎灝侀攣鏉冭€屽張絳夊緟鍏朵粬鐢ㄦ埛鎷ユ湁鐨勯儴鍒嗗皝閿佽€屽紩璧風殑鏃犱紤姝㈢殑絳夊緟
鍙互浣跨敤SET DEADLOCK_PRIORITY鎺у埗鍦ㄥ彂鐢熸閿佹儏鍐墊椂浼氳瘽鐨勫弽搴旀柟寮忋€?
Syntax:
SET DEADLOCK_PRIORITY { LOW | NORMAL}
鍏朵腑LOW璇存槑璇ヨ繘紼嬩細璇濈殑浼樺厛綰ц緝浣庯紝鍦ㄥ嚭鐜版閿佹椂錛屽彲浠ラ鍏堜腑鏂榪涚▼鐨勪簨鍔°€?
2 澶勭悊瓚呮椂鍜岃緗攣瓚呮椂鎸佺畫鏃墮棿銆?
@@LOCK_TIMEOUT 榪斿洖褰撳墠浼氳瘽鐨勫綋鍓嶉攣瓚呮椂璁劇疆錛屽崟浣嶄負姣
SET LOCK_TIMEOUT 璁劇疆鍏佽搴旂敤紼嬪簭璁劇疆璇彞絳夊緟闃誨璧勬簮鐨勬渶闀挎椂闂淬€傚綋璇彞絳夊緟鐨勬椂闂村ぇ浜?LOCK_TIMEOUT 璁劇疆鏃訛紝緋葷粺灝嗚嚜鍔ㄥ彇娑堥樆濉炵殑璇彞錛屽茍緇欏簲鐢ㄧ▼搴忚繑鍥?宸茶秴榪囦簡閿佽姹傝秴鏃舵椂孌?鐨?1222 鍙烽敊璇俊鎭?
紺轟緥
1錛夊皢閿佽秴鏃舵湡闄愯緗負 1,800 姣銆?
SET LOCK_TIMEOUT 1800
2) 閰嶇疆绱㈠紩鐨勯攣瀹氱矑搴?
鍙互浣跨敤 sp_indexoption 緋葷粺瀛樺偍榪囩▼鏉ヨ緗敤浜庣儲寮曠殑閿佸畾綺掑害
3錛夎緗簨鍔¢殧紱葷駭鍒?
SET   TRANSACTION   ISOLATION   LEVEL

浜?鏌ョ湅閿佺殑淇℃伅
1 鎵ц EXEC SP_LOCK 鎶ュ憡鏈夊叧閿佺殑淇℃伅
2 鏌ヨ鍒嗘瀽鍣ㄤ腑鎸塁trl+2鍙互鐪嬪埌閿佺殑淇℃伅

鍏€佸鎬殑sql璇彞
Java浠g爜 澶嶅埗浠g爜
  1. begin tran   
  2. update titles set title_idid錛漷itle_id  where 1錛?/font>2  
  3. if (selectavg(price)fromtitles)>$15  
  4. begin   
  5. update titles set price錛漰rice*1.10  
  6. where price<(select avg(price)from titles)   
  7. end   
  8. commit tran  


update titles set title_idid錛漷itle_id  where 1錛?錛岃繖涓潯浠舵槸姘歌繙涔熶笉浼氭垚绔嬬殑錛屽姝ゅ啓鐨勫惈涔夋槸浠€涔堝憿錛?
榪欓噷鐨剋here瀛愬彞鐪嬭搗鏉ュ緢濂囨€紝灝界璁$畻鍑虹殑緇撴灉鎬繪槸false銆傚綋浼樺寲鍣ㄥ鐞嗘鏌ヨ鏃訛紝鍥犱負瀹冩壘涓嶅埌浠諱綍鏈夋晥鐨凷ARG錛屽畠鐨勬煡璇㈣鍒掑氨浼氬己鍒朵嬌鐢ㄤ竴涓嫭鍗犻攣瀹氭潵榪涜琛ㄦ壂鎻忋€傛浜嬪姟鎵ц鏃訛紝where瀛愬彞绔嬪嵆寰楀埌涓€涓猣alse鍊鹼紝浜庢槸涓嶄細鎵ц瀹為檯涓婄殑鎵弿錛屼絾姝よ繘紼嬩粛寰楀埌浜嗕竴涓嫭鍗犵殑琛ㄩ攣瀹氥€?
鍥犱負姝よ繘紼嬬幇鍦ㄥ凡鏈変竴涓嫭鍗犵殑琛ㄩ攣錛屾墍浠ュ彲浠ヤ繚璇佹病鏈夊叾浠栦簨鍔′細淇敼浠諱綍鏁版嵁琛岋紝鑳借繘琛岄噸澶嶈錛屼笖閬垮厤浜嗙敱浜巋oldlock鎵€寮曡搗鐨勬綔鍦ㄦ€ф閿併€?
浣嗘槸錛屽湪浣跨敤琛ㄩ攣瀹氭潵灝藉彲鑳藉湴鍑忓皯姝婚攣鐨勫悓鏃訛紝涔熷鍔犱簡瀵硅〃閿佸畾鐨勪簤鐢ㄣ€傚洜姝わ紝鍦ㄥ疄鐜拌繖縐嶆柟娉曚箣鍓嶏紝浣犻渶瑕佹潈琛′竴涓嬶細閬垮厤姝婚攣鏄惁姣斿厑璁稿茍鍙戝湴瀵硅〃榪涜璁塊棶鏇撮噸瑕併€?
鎵€浠ワ紝鍦ㄨ繖涓簨鍔′腑錛屾病鏈夊叾浠栬繘紼嬩慨鏀硅〃涓換浣曡鐨刾rice銆?

涓?濡備綍閬垮厤姝婚攣
1 浣跨敤浜嬪姟鏃訛紝灝介噺緙╃煭浜嬪姟鐨勯€昏緫澶勭悊榪囩▼錛屽強鏃╂彁浜ゆ垨鍥炴粴浜嬪姟錛?
2 璁劇疆姝婚攣瓚呮椂鍙傛暟涓哄悎鐞嗚寖鍥達紝濡傦細3鍒嗛挓-10鍒嗙錛涜秴榪囨椂闂達紝鑷姩鏀懼純鏈鎿嶄綔錛岄伩鍏嶈繘紼嬫偓鎸傦紱
3 鎵€鏈夌殑SP閮借鏈夐敊璇鐞嗭紙閫氳繃@error錛?
4 涓€鑸笉瑕佷慨鏀?span class="hilite1">SQL SERVER浜嬪姟鐨勯粯璁ょ駭鍒€備笉鎺ㄨ崘寮鴻鍔犻攣
5 浼樺寲紼嬪簭錛屾鏌ュ茍閬垮厤姝婚攣鐜拌薄鍑虹幇錛?
1錛夊悎鐞嗗畨鎺掕〃璁塊棶欏哄簭
2錛夊湪浜嬪姟涓敖閲忛伩鍏嶇敤鎴峰共棰勶紝灝介噺浣夸竴涓簨鍔″鐞嗙殑浠誨姟灝戜簺銆?
3錛夐噰鐢ㄨ剰璇繪妧鏈€傝剰璇葷敱浜庝笉瀵硅璁塊棶鐨勮〃鍔犻攣錛岃€岄伩鍏嶄簡閿佸啿紿併€傚湪瀹㈡埛鏈?鏈嶅姟鍣ㄥ簲鐢ㄧ幆澧冧腑錛屾湁浜涗簨鍔″線寰€涓嶅厑璁歌鑴忔暟鎹紝浣嗗湪鐗瑰畾鐨勬潯浠朵笅錛屾垜浠彲浠ョ敤鑴忚銆?
4錛夋暟鎹闂椂鍩熺鏁f硶銆傛暟鎹闂椂鍩熺鏁f硶鏄寚鍦ㄥ鎴鋒満/鏈嶅姟鍣ㄧ粨鏋勪腑錛岄噰鍙栧悇縐嶆帶鍒舵墜孌墊帶鍒跺鏁版嵁搴撴垨鏁版嵁搴撲腑鐨勫璞¤闂椂闂存銆備富瑕侀€氳繃浠ヤ笅鏂瑰紡瀹炵幇: 鍚堢悊瀹夋帓鍚庡彴浜嬪姟鐨勬墽琛屾椂闂達紝閲囩敤宸ヤ綔嫻佸鍚庡彴浜嬪姟榪涜緇熶竴綆$悊銆傚伐浣滄祦鍦ㄧ鐞嗕換鍔℃椂錛屼竴鏂歸潰闄愬埗鍚屼竴綾諱換鍔$殑綰跨▼鏁幫紙寰€寰€闄愬埗涓?涓級錛岄槻姝㈣祫婧愯繃澶氬崰鐢? 鍙︿竴鏂歸潰鍚堢悊瀹夋帓涓嶅悓浠誨姟鎵ц鏃跺簭銆佹椂闂達紝灝介噺閬垮厤澶氫釜鍚庡彴浠誨姟鍚屾椂鎵ц錛屽彟澶栵紝閬垮厤鍦ㄥ墠鍙頒氦鏄撻珮宄版椂闂磋繍琛屽悗鍙頒換鍔?
5錛夋暟鎹瓨鍌ㄧ┖闂寸鏁f硶銆傛暟鎹瓨鍌ㄧ┖闂寸鏁f硶鏄寚閲囧彇鍚勭鎵嬫錛屽皢閫昏緫涓婂湪涓€涓〃涓殑鏁版嵁鍒嗘暎鍒拌嫢騫茬鏁g殑絀洪棿涓婂幓錛屼互渚挎敼鍠勫琛ㄧ殑璁塊棶鎬ц兘銆備富瑕侀€氳繃浠ヤ笅鏂規硶瀹炵幇: 絎竴錛屽皢澶ц〃鎸夎鎴栧垪鍒嗚В涓鴻嫢騫插皬琛? 絎簩錛屾寜涓嶅悓鐨勭敤鎴風兢鍒嗚В銆?
6錛変嬌鐢ㄥ敖鍙兘浣庣殑闅旂鎬х駭鍒€傞殧紱繪€х駭鍒槸鎸囦負淇濊瘉鏁版嵁搴撴暟鎹殑瀹屾暣鎬у拰涓€鑷存€ц€屼嬌澶氱敤鎴蜂簨鍔¢殧紱葷殑紼嬪害錛?span class="hilite1">SQL92瀹氫箟浜?縐嶉殧紱繪€х駭鍒細鏈彁浜よ銆佹彁浜よ銆佸彲閲嶅璇誨拰鍙覆琛屻€傚鏋滈€夋嫨榪囬珮鐨勯殧紱繪€х駭鍒紝濡傚彲涓茶錛岃櫧鐒剁郴緇熷彲浠ュ洜瀹炵幇鏇村ソ闅旂鎬ц€屾洿澶х▼搴︿笂淇濊瘉鏁版嵁鐨勫畬鏁存€у拰涓€鑷存€э紝浣嗗悇浜嬪姟闂村啿紿佽€屾閿佺殑鏈轟細澶уぇ澧炲姞錛屽ぇ澶у獎鍝嶄簡緋葷粺鎬ц兘銆?
7錛変嬌鐢˙ound Connections銆侭ound connections 鍏佽涓や釜鎴栧涓簨鍔¤繛鎺ュ叡浜簨鍔″拰閿侊紝鑰屼笖浠諱綍涓€涓簨鍔¤繛鎺ヨ鐢寵閿佸鍚屽彟澶栦竴涓簨鍔¤鐢寵閿佷竴鏍鳳紝鍥犳鍙互鍏佽榪欎簺浜嬪姟鍏變韓鏁版嵁鑰屼笉浼氭湁鍔犻攣鐨勫啿紿併€?
8錛夎€冭檻浣跨敤涔愯閿佸畾鎴栦嬌浜嬪姟棣栧厛鑾峰緱涓€涓嫭鍗犻攣瀹氥€?nbsp;

鍏浣曞琛屻€?琛ㄣ€佹暟鎹簱鍔犻攣
1 濡備綍閿佷竴涓〃鐨勬煇涓€琛?
Java浠g爜 澶嶅埗浠g爜
  1. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED   
  2. SELECT * FROM table1 ROWLOCK WHERE A = 'a1'  

2 閿佸畾鏁版嵁搴撶殑涓€涓〃
select col1 from 琛?(tablockx) where 1=1 ;
鍔犻攣鍚庡叾瀹冧漢涓嶅彲鎿嶄綔錛岀洿鍒板姞閿佺敤鎴瘋В閿侊紝鐢╟ommit鎴杛ollback瑙i攣
3.瀹炰緥
寤鴻〃
Java浠g爜 澶嶅埗浠g爜
  1. create table table1(A varchar(50)  not  null, B varchar(50) ,C varchar(50));   
  2. create table table2(D varchar(50),E varchar(50))   
  3. insert table1 (A,B,C) values(‘a1’,’b1’,’c1’);   
  4. insert table1 (A,B,C) values(‘a2’,’b2’,’c2’);   
  5. insert table1 (A,B,C) values(‘a3’,’b3’,’c3’);   
  6. insert table2 (D,E) values(‘d1’,’e1’);   
  7. insert table2 (D,E) values(‘d2’,’e2’);  

1錛夋帓瀹冮攣
Java浠g爜 澶嶅埗浠g爜
  1. -- A浜嬪姟鍏堟洿鏂皌able1琛紝鍦ㄦ洿鏂版椂錛屽鍏朵粬浜嬪姟榪涜鎺掍粬   
  2. begin tran   
  3. update table1 set A='aa' where B='b2'錛?  
  4. waitfor delay '00:00:30'錛?nbsp;--絳夊緟30縐?  
  5. commit tran   
  6. -- A浜嬪姟鍏堟洿鏂皌able2琛?  
  7. begin tran   
  8. select * from table1 where B='b2';   
  9. commit tran  
鑻ュ悓鏃舵墽琛屼笂榪頒袱涓簨鍔★紝鍒檚elect鏌ヨ蹇呴』絳夊緟update鎵ц瀹屾瘯鎵嶈兘鎵ц鍗寵絳夊緟30縐?
2錛夊叡浜攣
Java浠g爜 澶嶅埗浠g爜
  1. -- A浜嬪姟鍏堟煡璇able1琛紝鍦ㄦ煡璇㈡椂錛屽姞鍏變韓閿侊紝闃叉鍏朵粬浜嬪姟瀵硅琛ㄨ繘琛屼慨鏀規搷浣?  
  2. begin tran   
  3. select * from table1 holdlock where B='b2' ;   
  4.  -holdlock浜轟負鍔犻攣   
  5. waitfor delay '00:00:30';--絳夊緟30縐?  
  6. commit tran   
  7. -- A浜嬪姟鍏堟煡璇able1琛紝鍚庢洿鏀箃able1琛?  
  8. begin tran   
  9. select A,C from table1 where B='b2';   
  10. update table1 set A='aa' where B='b2';   
  11. commit tran  
鑻ュ茍鍙戞墽琛屼笂榪頒袱涓簨鍔★紝鍒橞浜嬪姟涓殑select鏌ヨ鍙互鎵ц,鑰寀pdate蹇呴』絳夊緟絎竴涓簨鍔¢噴鏀懼叡浜攣杞負鎺掑畠閿佸悗鎵嶈兘鎵ц鍗寵絳夊緟30縐?
3錛夋閿?
Java浠g爜 澶嶅埗浠g爜
  1. -- A浜嬪姟鍏堟洿鏂皌able1琛紝鐒跺悗寤舵椂30縐掞紝鍐嶆洿鏂皌able2琛紱   
  2. begin tran   
  3. update table1 set A='aa' where B='b2';   
  4. --榪欏皢鍦?nbsp;Table1 涓敓鎴愭帓浠栬閿侊紝鐩村埌浜嬪姟瀹屾垚鍚庢墠浼氶噴鏀捐閿併€?  
  5. waitfor delay '00:00:30';   
  6. --榪涘叆寤舵椂   
  7. update table2 set D='d5' where E='e1' ;   
  8. commit tran   
  9. -- B浜嬪姟鍏堟洿鏂皌able2琛紝鐒跺悗寤舵椂10縐掞紝鍐嶆洿鏂皌able1琛紱   
  10. begin tran   
  11. update table2 set D='d5' where E='e1';   
  12. --榪欏皢鍦?nbsp;Table2 涓敓鎴愭帓浠栬閿侊紝鐩村埌浜嬪姟瀹屾垚鍚庢墠浼氶噴鏀捐閿?  
  13. waitfor delay '00:00:10'  
  14. --榪涘叆寤舵椂   
  15. update table1 set A='aa' where B='b2' ;   
  16. commit tran  
鑻ュ茍鍙戞墽琛屼笂榪頒袱涓簨鍔★紝A,B涓や簨鍔¢兘瑕佺瓑寰呭鏂歸噴鏀炬帓浠栭攣錛岃繖鏍蜂究褰㈡垚浜嗘閿併€?

涔濄€?span class="hilite1">sqlserver鎻愪緵鐨勮〃綰ч攣
sqlserver鎵€鎸囧畾鐨勮〃綰ч攣瀹氭彁紺烘湁濡備笅鍑犵
1錛?HOLDLOCK: 鍦ㄨ琛ㄤ笂淇濇寔鍏變韓閿侊紝鐩村埌鏁翠釜浜嬪姟緇撴潫錛岃€屼笉鏄湪璇彞鎵ц瀹岀珛鍗抽噴鏀炬墍娣誨姞鐨勯攣銆?nbsp;
2錛?NOLOCK錛氫笉娣誨姞鍏變韓閿佸拰鎺掑畠閿侊紝褰撹繖涓€夐」鐢熸晥鍚庯紝鍙兘璇誨埌鏈彁浜よ鐨勬暟鎹垨“鑴忔暟鎹?#8221;錛岃繖涓€夐」浠呬粎搴旂敤浜嶴ELECT璇彞銆?nbsp; 
3錛?PAGLOCK錛氭寚瀹氭坊鍔犻〉閿侊紙鍚﹀垯閫氬父鍙兘娣誨姞琛ㄩ攣錛?
4錛?READCOMMITTED鐢ㄤ笌榪愯鍦ㄦ彁浜よ闅旂綰у埆鐨勪簨鍔$浉鍚岀殑閿佽涔夋墽琛屾壂鎻忋€傞粯璁ゆ儏鍐典笅錛?span class="hilite1">SQL Server 2000 鍦ㄦ闅旂綰у埆涓婃搷浣溿€?
5錛?READPAST: 璺寵繃宸茬粡鍔犻攣鐨勬暟鎹錛岃繖涓€夐」灝嗕嬌浜嬪姟璇誨彇鏁版嵁鏃惰煩榪囬偅浜涘凡緇忚鍏朵粬浜嬪姟閿佸畾鐨勬暟鎹錛岃€屼笉鏄樆濉炵洿鍒板叾浠栦簨鍔¢噴鏀鵑攣錛孯EADPAST浠呬粎搴旂敤浜嶳EAD COMMITTED闅旂鎬х駭鍒笅浜嬪姟鎿嶄綔涓殑SELECT璇彞鎿嶄綔
6錛?READUNCOMMITTED錛氱瓑鍚屼簬NOLOCK銆?nbsp;  
7錛?REPEATABLEREAD錛氳緗簨鍔′負鍙噸澶嶈闅旂鎬х駭鍒€?nbsp;
8錛?ROWLOCK錛氫嬌鐢ㄨ綰ч攣錛岃€屼笉浣跨敤綺掑害鏇寸矖鐨勯〉綰ч攣鍜岃〃綰ч攣銆?
9錛?SERIALIZABLE錛氱敤涓庤繍琛屽湪鍙覆琛岃闅旂綰у埆鐨勪簨鍔$浉鍚岀殑閿佽涔夋墽琛屾壂鎻忋€傜瓑鍚屼簬 HOLDLOCK銆?
  10錛?TABLOCK錛氭寚瀹氫嬌鐢ㄨ〃綰ч攣錛岃€屼笉鏄嬌鐢ㄨ綰ф垨欏甸潰綰х殑閿侊紝SQL Server鍦ㄨ璇彞鎵ц瀹屽悗閲婃斁榪欎釜閿侊紝鑰屽鏋滃悓鏃舵寚瀹氫簡HOLDLOCK錛岃閿佷竴鐩翠繚鎸佸埌榪欎釜浜嬪姟緇撴潫銆?
11錛?TABLOCKX錛氭寚瀹氬湪琛ㄤ笂浣跨敤鎺掑畠閿侊紝榪欎釜閿佸彲浠ラ樆姝㈠叾浠栦簨鍔¤鎴栨洿鏂拌繖涓〃鐨勬暟鎹紝鐩村埌榪欎釜璇彞鎴栨暣涓簨鍔$粨鏉熴€?
12錛?UPDLOCK 錛氭寚瀹氬湪璇昏〃涓暟鎹椂璁劇疆鏇存柊閿侊紙update lock錛夎€屼笉鏄緗叡浜攣錛岃閿佷竴鐩翠繚鎸佸埌榪欎釜璇彞鎴栨暣涓簨鍔$粨鏉燂紝浣跨敤UPDLOCK鐨勪綔鐢ㄦ槸鍏佽鐢ㄦ埛鍏堣鍙栨暟鎹紙鑰屼笖涓嶉樆濉炲叾浠栫敤鎴瘋鏁版嵁錛夛紝騫朵笖淇濊瘉鍦ㄥ悗鏉ュ啀鏇存柊鏁版嵁鏃訛紝榪欎竴孌墊椂闂村唴榪欎簺鏁版嵁娌℃湁琚叾浠栫敤鎴蜂慨鏀?
SELECT * FROM table WITH (HOLDLOCK) 鍏朵粬浜嬪姟鍙互璇誨彇琛紝浣嗕笉鑳芥洿鏂板垹闄?
SELECT * FROM table WITH (TABLOCKX) 鍏朵粬浜嬪姟涓嶈兘璇誨彇琛?鏇存柊鍜屽垹闄?

鍗併€佸簲鐢ㄧ▼搴忛攣

搴旂敤紼嬪簭閿佸氨鏄鎴風浠g爜鐢熸垚鐨勯攣錛岃€屼笉鏄?span class="hilite1">sql server鏈韓鐢熸垚鐨勯攣澶勭悊搴旂敤紼嬪簭閿佺殑涓や釜緋葷粺瀛樺偍榪囩▼
sp_getapplock錛?閿佸畾搴旂敤紼嬪簭璧勬簮
sp_releaseapplock錛?涓哄簲鐢ㄧ▼搴忚祫婧愯В閿?

]]>
sqlserver涔愯閿佷笌鎮茶閿佸疄渚?/title><link>http://www.aygfsteel.com/tinysun/archive/2010/02/04/311952.html</link><dc:creator>浣曞厠鍕?/dc:creator><author>浣曞厠鍕?/author><pubDate>Thu, 04 Feb 2010 06:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/tinysun/archive/2010/02/04/311952.html</guid><wfw:comment>http://www.aygfsteel.com/tinysun/comments/311952.html</wfw:comment><comments>http://www.aygfsteel.com/tinysun/archive/2010/02/04/311952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tinysun/comments/commentRss/311952.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tinysun/services/trackbacks/311952.html</trackback:ping><description><![CDATA[<p>鍦ㄥ疄闄呯殑澶氱敤鎴峰茍鍙戣闂殑鐢熶駭鐜閲岃竟錛屾垜浠粡甯歌灝藉彲鑳界殑淇濇寔鏁版嵁鐨勪竴鑷存€с€傝€屽叾涓渶鍏稿瀷鐨勪緥瀛愬氨鏄垜浠粠琛ㄩ噷杈硅鍙栨暟鎹紝媯€鏌ラ獙璇佸悗瀵規暟鎹繘琛屼慨鏀癸紝鐒跺悗鍐欏洖鍒版暟鎹簱涓€傚湪璇誨彇鍜屽啓鍏ョ殑榪囩▼涓紝鍋囧鍦ㄥ鐢ㄦ埛騫跺彂鐨勭幆澧冮噷杈癸紝鍏朵粬鐢ㄦ埛宸茬粡鎶婁綘瑕佷慨鏀圭殑鏁版嵁榪涜浜嗕慨鏀規槸闈炲父鏈夊彲鑳藉彂鐢熺殑鎯呭喌錛岃繖鏍峰氨閫犳垚浜嗘暟鎹殑涓嶄竴鑷存€с€傝В鍐寵繖鏍風殑鍔炴硶錛孲QL SERVER鎻愬嚭浜嗕箰瑙傞攣瀹氬拰鎮茶閿佸畾鐨勬蹇碉紝涓嬭竟鎴戜互涓€涓疄渚嬫潵璇存槑濡備綍浣跨敤涔愯閿佸畾鍜屾偛瑙傞攣瀹氭潵瑙e喅榪欐牱鐨勯棶棰樸€?</p> <p>/* 寤虹珛嫻嬭瘯琛?Card,浠h〃涓€涓湡瀹炵殑鍗″簱,渚涚敤鎴鋒敞鍐?鐢ㄦ埛瑕佷粠閲岃竟閫夊嚭涓€涓湭浣跨敤鐨勫崱錛屼篃灝辨槸F_Flag=0鐨勫崱錛岀粰鐢ㄦ埛娉ㄥ唽錛氭洿鏂癋_Name,F_Time,F_Flag瀛楁. 鍋囧鍑虹幇涓や釜鐢ㄦ埛鍚屾椂鏇存柊涓€寮犲崱鐨勬儏鍐碉紝鏄笉鑳藉蹇嶇殑錛屼篃灝辨槸鎴戜滑鎵€璇寸殑鏁版嵁涓嶄竴鑷磋銆?/</p> <p>create table Card(F_CardNO varchar(20),F_Name varchar(20),F_Flag bit,F_Time datetime)<br /> Go<br /> insert Card(F_CardNo,F_Flag) select '1111-1111',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1112',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1113',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1114',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1115',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1116',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1117',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1118',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1119',0<br /> insert Card(F_CardNo,F_Flag) select '1111-1110',0<br /> Go</p> <p>-- 涓嬭竟鏄垜浠粡甯鎬嬌鐢ㄧ殑鏇存柊鏂規濡備笅:</p> <p>declare @CardNo varchar(20)<br /> Begin Tran</p> <p>-- 閫夋嫨涓€寮犳湭浣跨敤鐨勫崱<br /> select top 1 @CardNo=F_CardNo<br /> from Card where F_Flag=0</p> <p>-- 寤惰繜50縐掞紝妯℃嫙騫跺彂璁塊棶.<br /> waitfor delay '000:00:50'</p> <p>-- 鎶婂垰鎵嶉€夋嫨鍑烘潵鐨勫崱榪涜娉ㄥ唽.</p> <p>update Card<br /> set F_Name=user,<br /> F_Time=getdate(),<br /> F_Flag=1<br /> where F_CardNo=@CardNo</p> <p>commit</p> <p>闂:鍋囧鎴戜滑鍦ㄥ悓涓€紿楀彛鎵ц鍚屼竴孌典唬鐮侊紝浣嗘槸鍘繪帀浜唚aitfor delay瀛愬彞.涓よ竟鎵ц瀹屾瘯鍚?鎴戜滑鍙戠幇灝界鎵ц浜嗕袱嬈℃敞鍐岋紝浣嗘槸鍙敞鍐屼簡涓€寮犲崱錛屼篃灝辨槸涓や釜浜烘敞鍐屼簡鍚屼竴寮犲崱. </p> <p>鎮茶閿佸畾瑙e喅鏂規</p> <p>-- 鎴戜滑鍙瀵逛笂杈圭殑浠g爜鍋氬井灝忕殑鏀瑰彉灝卞彲浠ュ疄鐜版偛瑙傜殑閿佸畾.</p> <p>declare @CardNo varchar(20)<br /> Begin Tran</p> <p>-- 閫夋嫨涓€寮犳湭浣跨敤鐨勫崱<br /> select top 1 @CardNo=F_CardNo<br /> from Card with (UPDLOCK) where F_Flag=0</p> <p>-- 寤惰繜50縐掞紝妯℃嫙騫跺彂璁塊棶.<br /> waitfor delay '000:00:50'</p> <p>-- 鎶婂垰鎵嶉€夋嫨鍑烘潵鐨勫崱榪涜娉ㄥ唽.</p> <p>update Card<br /> set F_Name=user,<br /> F_Time=getdate(),<br /> F_Flag=1<br /> where F_CardNo=@CardNo</p> <p>commit</p> <p>娉ㄩ噸鍏朵腑鐨勫尯鍒簡鍚?with(updlock),鏄殑,鎴戜滑鍦ㄦ煡璇㈢殑鏃跺€欎嬌鐢ㄤ簡with (UPDLOCK)閫夐」,鍦ㄦ煡璇㈣褰曠殑鏃跺€欐垜浠氨瀵硅褰曞姞涓婁簡鏇存柊閿?琛ㄧず鎴戜滑鍗沖皢瀵規璁板綍榪涜鏇存柊.娉ㄩ噸鏇存柊閿佸拰鍏變韓閿佹槸涓嶅啿紿佺殑,涔熷氨鏄叾浠栫敤鎴瘋繕鍙互鏌ヨ姝よ〃鐨勫唴瀹?浣嗘槸鍜屾洿鏂伴攣鍜屾帓瀹冮攣鏄啿紿佺殑.鎵€浠ュ叾浠栫殑鏇存柊鐢ㄦ埛灝變細闃誨.鍋囧鎴戜滑鍦ㄥ彟澶栦竴涓獥鍙f墽琛屾浠g爜,鍚屾牱涓嶅姞waifor delay瀛愬彞.涓よ竟鎵ц瀹屾瘯鍚?鎴戜滑鍙戠幇鎴愬姛鐨勬敞鍐屼簡涓ゅ紶鍗?鍙兘鎴戜滑宸茬粡鍙戠幇浜嗘偛瑙傞攣瀹氱殑緙虹偣:褰撲竴涓敤鎴瘋繘琛屾洿鏂扮殑浜嬪姟鐨勬椂鍊?鍏朵粬鏇存柊鐢ㄦ埛蹇呴』鎺掗槦絳夊緟,鍗充嬌閭d釜鐢ㄦ埛鏇存柊鐨勪笉鏄悓涓€鏉¤褰? </p> <p>涔愯閿佸畾瑙e喅鏂規</p> <p>-- 棣栧厛鎴戜滑鍦–ard琛ㄩ噷杈瑰姞涓婁竴鍒桭_TimeStamp 鍒?璇ュ垪鏄痸arbinary(8)綾誨瀷.浣嗘槸鍦ㄦ洿鏂扮殑鏃跺€欒繖涓€間細鑷姩澧為暱.</p> <p>alter table Card add F_TimeStamp timestamp not null</p> <p>-- 鎮茶閿佸畾<br /> declare @CardNo varchar(20)<br /> declare @timestamp varbinary(8)<br /> declare @rowcount int</p> <p>Begin Tran</p> <p>-- 鍙栧緱鍗″彿鍜屽師濮嬬殑鏃墮棿鎴沖€?br /> select top 1 @CardNo=F_CardNo,<br /> @timestamp=F_TimeStamp<br /> from Card<br /> where F_Flag=0</p> <p>-- 寤惰繜50縐掞紝妯℃嫙騫跺彂璁塊棶.<br /> waitfor delay '000:00:50'</p> <p>-- 娉ㄥ唽鍗?浣嗘槸瑕佹瘮杈冩椂闂存埑鏄惁鍙戠敓浜嗗彉鍖?鍋囧娌℃湁鍙戠敓鍙樺寲.鏇存柊鎴愬姛.鍋囧鍙戠敓鍙樺寲,鏇存柊澶辮觸.</p> <p>update Card<br /> set F_Name=user,<br /> F_Time=getdate(),<br /> F_Flag=1<br /> where F_CardNo=@CardNo and F_TimeStamp=@timestamp<br /> set @rowcount=@@rowcount<br /> if @rowcount=1<br /> begin<br /> print '鏇存柊鎴愬姛!'<br /> commit<br /> end<br /> else if @rowcount=0<br /> begin<br /> if exists(select 1 from Card where F_CardNo=@CardNo)<br /> begin<br /> print '姝ゅ崱宸茬粡琚彟澶栦竴涓敤鎴鋒敞鍐岋紒'<br /> rollback tran<br /> end<br /> else<br /> begin<br /> print '騫朵笉瀛樺湪姝ゅ崱!'<br /> rollback tran<br /> end<br /> end</p> <p>鍦ㄥ彟澶栦竴涓獥鍙i噷杈規墽琛屾病鏈墂aitfor鐨勪唬鐮?娉ㄥ唽鎴愬姛鍚?榪斿洖鍘熸潵鐨勭獥鍙?鎴戜滑灝變細鍙戠幇鍒版椂闂村悗瀹冩樉紺虹殑鎻愮ず鏄鍗′互琚彟澶栦竴涓敤鎴鋒敞鍐岀殑鎻愮ず.寰堟槑鏄?榪欐牱鎴戜滑涔熷彲浠ラ伩鍏嶄袱涓敤鎴峰悓鏃舵敞鍐屼竴寮犲崱鐨勭幇璞$殑鍑虹幇.鍚屾椂,浣跨敤榪欑鏂規硶鐨勫彟澶栦竴涓ソ澶勬槸娌℃湁浣跨敤鏇存柊閿?榪欐牱澧炲姞鐨勭郴緇熺殑騫跺彂澶勭悊鑳藉姏.</p> <p>涓婅竟鎴戝叿浣撲粙緇嶄簡涔愯閿佸畾鍜屾偛瑙傞攣瀹氱殑浣跨敤鏂規硶,鍦ㄥ疄闄呯敓浜х幆澧冮噷杈?鍋囧騫跺彂閲忎笉澶?鎴戜滑瀹屽叏鍙互浣跨敤鎮茶閿佸畾鐨勬柟娉?鍥犱負榪欑鏂規硶浣跨敤璧鋒潵闈炲父鏂逛究鍜岀畝鍗?浣嗘槸鍋囧緋葷粺鐨勫茍鍙戦潪甯稿ぇ鐨勮瘽,鎮茶閿佸畾浼氬甫鏉ラ潪甯稿ぇ鐨勬€ц兘闂,鎵€浠ユ垜浠氨瑕侀€夋嫨涔愯閿佸畾鐨勬柟娉?</p> <p><br /> 鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/gudenren/archive/2009/07/31/4397291.aspx</p> <img src ="http://www.aygfsteel.com/tinysun/aggbug/311952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tinysun/" target="_blank">浣曞厠鍕?/a> 2010-02-04 14:22 <a href="http://www.aygfsteel.com/tinysun/archive/2010/02/04/311952.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>閿乢鏁版嵁搴撳師鐞?/title><link>http://www.aygfsteel.com/tinysun/archive/2010/02/04/311949.html</link><dc:creator>浣曞厠鍕?/dc:creator><author>浣曞厠鍕?/author><pubDate>Thu, 04 Feb 2010 06:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/tinysun/archive/2010/02/04/311949.html</guid><wfw:comment>http://www.aygfsteel.com/tinysun/comments/311949.html</wfw:comment><comments>http://www.aygfsteel.com/tinysun/archive/2010/02/04/311949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tinysun/comments/commentRss/311949.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tinysun/services/trackbacks/311949.html</trackback:ping><description><![CDATA[<li><span><span>鏁版嵁搴?-閿?  </span></span></li> <li><span id="wmqeeuq" class="number">1</span><span>#瀹氫箟   </span></span></li> <li><span>鏁版嵁搴撳拰鎿嶄綔緋葷粺涓€鏍鳳紝鏄竴涓鐢ㄦ埛浣跨敤鐨勫叡浜祫婧愩€傚綋澶氫釜鐢ㄦ埛騫跺彂鍦板瓨鍙栨暟鎹椂錛屽湪鏁版嵁搴撲腑灝變細浜х敓澶氫釜浜嬪姟鍚屾椂瀛樺彇鍚屼竴鏁版嵁鐨勬儏鍐點€傝嫢瀵瑰茍鍙戞搷浣滀笉鍔犳帶鍒跺氨鍙兘浼氳鍙栧拰瀛樺偍涓嶆紜殑鏁版嵁錛岀牬鍧忔暟鎹簱鐨勪竴鑷存€с€?  </span></li> <li><span>    鍔犻攣鏄疄鐜版暟鎹簱騫跺彂鎺у埗鐨勪竴涓潪甯擱噸瑕佺殑鎶€鏈€傚湪瀹為檯搴旂敤涓粡甯鎬細閬囧埌鐨勪笌閿佺浉鍏崇殑寮傚父鎯呭喌錛屽綋涓や釜浜嬪姟闇€瑕佷竴緇勬湁鍐茬獊鐨勯攣錛岃€屼笉鑳藉皢浜嬪姟緇х畫涓嬪幓鐨勮瘽錛屽氨浼氬嚭鐜版閿侊紝涓ラ噸褰卞搷搴旂敤鐨勬甯告墽琛屻€?  </span></li> <li><span>    鍦ㄦ暟鎹簱涓湁涓ょ鍩烘湰鐨勯攣綾誨瀷錛氭帓瀹冮攣錛圗xclusive Locks錛屽嵆X閿侊級鍜屽叡浜攣錛圫hare Locks錛屽嵆S閿侊級銆?  </span></li> <li><span>@褰撴暟鎹璞¤鍔犱笂鎺掑畠閿佹椂錛屽叾浠栫殑浜嬪姟涓嶈兘瀵瑰畠璇誨彇鍜屼慨鏀廣€?  </span></li> <li><span>@鍔犱簡鍏變韓閿佺殑鏁版嵁瀵硅薄鍙互琚叾浠栦簨鍔¤鍙栵紝浣嗕笉鑳戒慨鏀廣€?  </span></li> <li><span>鏁版嵁搴撳埄鐢ㄨ繖涓ょ鍩烘湰鐨勯攣綾誨瀷鏉ュ鏁版嵁搴撶殑浜嬪姟榪涜騫跺彂鎺у埗銆?  </span></li> <li><span>  </span></li> <li><span id="wmqeeuq" class="number">2</span><span>#鎮茶閿侊紝姝e鍏跺悕錛屽畠鎸囩殑鏄鏁版嵁琚鐣岋紙鍖呮嫭鏈郴緇熷綋鍓嶇殑鍏朵粬浜嬪姟錛屼互鍙婃潵鑷閮ㄧ郴緇熺殑浜嬪姟澶勭悊錛変慨鏀規寔淇濆畧鎬佸害錛屽洜姝わ紝鍦ㄦ暣涓暟鎹鐞嗚繃紼嬩腑錛屽皢鏁版嵁澶勪簬閿佸畾鐘舵€併€傛偛瑙傞攣鐨勫疄鐜幫紝寰€寰€渚濋潬鏁版嵁搴撴彁渚涚殑閿佹満鍒訛紙涔熷彧鏈夋暟鎹簱灞傛彁渚涚殑閿佹満鍒舵墠鑳界湡姝d繚璇佹暟鎹闂殑鎺掍粬鎬э紝鍚﹀垯錛屽嵆浣垮湪鏈郴緇熶腑瀹炵幇浜嗗姞閿佹満鍒訛紝涔熸棤娉曚繚璇佸閮ㄧ郴緇熶笉浼氫慨鏀規暟鎹級銆?  </span></span></li> <li><span>涓€涓吀鍨嬬殑鍊氳禆鏁版嵁搴撶殑鎮茶閿佽皟鐢細   </span></li> <li><span>select * from account where name=”Erica” </span><span id="wmqeeuq" class="keyword">for</span><span> update   </span></span></li> <li><span>榪欐潯 sql 璇彞閿佸畾浜?nbsp;account 琛ㄤ腑鎵€鏈夌鍚堟绱㈡潯浠訛紙name=“Erica”錛夌殑璁板綍銆傛湰嬈′簨鍔℃彁浜や箣鍓嶏紙浜嬪姟鎻愪氦鏃朵細閲婃斁浜嬪姟榪囩▼涓殑閿侊級錛屽鐣屾棤娉曚慨鏀硅繖浜涜褰曘€?  </span></li> <li><span>鎮茶閿佸ぇ澶氭暟鎯呭喌涓嬩緷闈犳暟鎹簱鐨勯攣鏈哄埗瀹炵幇錛屼互淇濊瘉鎿嶄綔鏈€澶х▼搴︾殑鐙崰鎬с€備絾闅忎箣鑰屾潵鐨勫氨鏄暟鎹簱鎬ц兘鐨勫ぇ閲忓紑閿€錛岀壒鍒槸瀵歸暱浜嬪姟鑰岃█錛岃繖鏍風殑寮€閿€寰€寰€鏃犳硶鎵垮彈銆傚涓€涓噾铻嶇郴緇燂紝褰撴煇涓搷浣滃憳璇誨彇鐢ㄦ埛鐨勬暟鎹紝騫跺湪璇誨嚭鐨勭敤鎴鋒暟鎹殑鍩虹涓婅繘琛屼慨鏀規椂錛堝鏇存敼鐢ㄦ埛甯愭埛浣欓錛夛紝濡傛灉閲囩敤鎮茶閿佹満鍒訛紝涔熷氨鎰忓懗鐫€鏁翠釜鎿嶄綔榪囩▼涓紙浠庢搷浣滃憳璇誨嚭鏁版嵁銆佸紑濮嬩慨鏀圭洿鑷蟲彁浜や慨鏀圭粨鏋滅殑鍏ㄨ繃紼嬶紝鐢氳嚦榪樺寘鎷搷浣滃憳涓€斿幓鐓挅鍟$殑鏃墮棿錛夛紝鏁版嵁搴撹褰曞緇堝浜庡姞閿佺姸鎬侊紝鍙互鎯寵錛屽鏋滈潰瀵瑰嚑 鐧句笂鍗冧釜騫跺彂錛岃繖鏍風殑鎯呭喌灝嗗鑷存€庢牱鐨勫悗鏋溿€?  </span></li> <li><span>  </span></li> <li><span>  </span></li> <li><span id="wmqeeuq" class="number">3</span><span>#涔愯閿佹満鍒跺湪涓€瀹氱▼搴︿笂瑙e喅浜嗚繖涓棶棰樸€備箰瑙傞攣錛屽ぇ澶氭槸鍩轟簬鏁版嵁鐗堟湰錛圴ersion錛夎褰曟満鍒跺疄鐜般€備綍璋撴暟鎹増鏈紵鍗充負鏁版嵁澧炲姞涓€涓増鏈爣璇嗭紝鍦ㄥ熀浜庢暟鎹簱琛ㄧ殑鐗堟湰瑙e喅鏂規涓紝涓€鑸槸閫氳繃涓烘暟鎹簱琛ㄥ鍔犱竴涓?nbsp;“version” 瀛楁鏉ュ疄鐜拌鍙栧嚭鏁版嵁鏃訛紝灝嗘鐗堟湰鍙蜂竴鍚岃鍑猴紝涔嬪悗鏇存柊鏃訛紝瀵規鐗堟湰鍙峰姞涓€銆傛鏃訛紝灝嗘彁浜ゆ暟鎹殑鐗堟湰鏁版嵁涓庢暟鎹簱琛ㄥ搴旇褰曠殑褰撳墠鐗堟湰淇℃伅榪涜姣斿錛屽鏋滄彁浜ょ殑鏁版嵁鐗堟湰鍙峰ぇ浜庢暟鎹簱琛ㄥ綋鍓嶇増鏈彿錛屽垯浜堜互鏇存柊錛屽惁鍒欒涓烘槸榪囨湡鏁版嵁銆?  </span></span></li> <li><span>瀵逛簬涓婇潰淇敼鐢ㄦ埛甯愭埛淇℃伅鐨勪緥瀛愯€岃█錛屽亣璁炬暟鎹簱涓笎鎴蜂俊鎭〃涓湁涓€涓?nbsp;version 瀛楁錛屽綋鍓嶅€間負 </span><span id="wmqeeuq" class="number">1</span><span> 錛涜€屽綋鍓嶅笎鎴蜂綑棰濆瓧孌碉紙 balance 錛変負 $</span><span id="wmqeeuq" class="number">100</span><span> 銆?  </span></span></li> <li><span id="wmqeeuq" class="number">1</span><span> 鎿嶄綔鍛?nbsp;A 姝ゆ椂灝嗗叾璇誨嚭錛?nbsp;version=</span><span id="wmqeeuq" class="number">1</span><span> 錛夛紝騫朵粠鍏跺笎鎴蜂綑棰濅腑鎵i櫎 $</span><span id="wmqeeuq" class="number">50</span><span>錛?nbsp;$</span><span id="wmqeeuq" class="number">100</span><span>-$</span><span id="wmqeeuq" class="number">50</span><span> 錛夈€?  </span></span></li> <li><span id="wmqeeuq" class="number">2</span><span> 鍦ㄦ搷浣滃憳 A 鎿嶄綔鐨勮繃紼嬩腑錛屾搷浣滃憳 B 涔熻鍏ユ鐢ㄦ埛淇℃伅錛?nbsp;version=</span><span id="wmqeeuq" class="number">1</span><span> 錛夛紝騫朵粠鍏跺笎鎴蜂綑棰濅腑鎵i櫎 $</span><span id="wmqeeuq" class="number">20</span><span> 錛?nbsp;$</span><span id="wmqeeuq" class="number">100</span><span>-$</span><span id="wmqeeuq" class="number">20</span><span> 錛夈€?  </span></span></li> <li><span id="wmqeeuq" class="number">3</span><span> 鎿嶄綔鍛?nbsp;A 瀹屾垚浜嗕慨鏀瑰伐浣滐紝灝嗘暟鎹増鏈彿鍔犱竴錛?nbsp;version=</span><span id="wmqeeuq" class="number">2</span><span> 錛夛紝榪炲悓甯愭埛鎵i櫎鍚庝綑棰濓紙 balance=$</span><span id="wmqeeuq" class="number">50</span><span> 錛夛紝鎻愪氦鑷蟲暟鎹簱鏇存柊錛屾鏃剁敱浜庢彁浜ゆ暟鎹増鏈ぇ浜庢暟鎹簱璁板綍褰撳墠鐗堟湰錛屾暟鎹鏇存柊錛屾暟鎹簱璁板綍 version 鏇存柊涓?nbsp;</span><span id="wmqeeuq" class="number">2</span><span> 銆?  </span></span></li> <li><span id="wmqeeuq" class="number">4</span><span> 鎿嶄綔鍛?nbsp;B 瀹屾垚浜嗘搷浣滐紝涔熷皢鐗堟湰鍙峰姞涓€錛?nbsp;version=</span><span id="wmqeeuq" class="number">2</span><span> 錛夎瘯鍥懼悜鏁版嵁搴撴彁浜ゆ暟鎹紙 balance=$</span><span id="wmqeeuq" class="number">80</span><span> 錛夛紝浣嗘鏃舵瘮瀵規暟鎹簱璁板綍鐗堟湰鏃跺彂鐜幫紝鎿嶄綔鍛?nbsp;B 鎻愪氦鐨勬暟鎹増鏈彿涓?nbsp;</span><span id="wmqeeuq" class="number">2</span><span> 錛屾暟鎹簱璁板綍褰撳墠鐗堟湰涔熶負 </span><span id="wmqeeuq" class="number">2</span><span> 錛屼笉婊¤凍 “ 鎻愪氦鐗堟湰蹇呴』澶т簬璁板綍褰撳墠鐗堟湰鎵嶈兘鎵ц鏇存柊 “ 鐨勪箰瑙傞攣絳栫暐錛屽洜姝わ紝鎿嶄綔鍛?nbsp;B 鐨勬彁浜よ椹沖洖銆傝繖鏍鳳紝灝遍伩鍏嶄簡鎿嶄綔鍛?nbsp;B 鐢ㄥ熀浜巚ersion=</span><span id="wmqeeuq" class="number">1</span><span>鐨勬棫鏁版嵁淇敼鐨勭粨鏋滆鐩栨搷浣滃憳 A 鐨勬搷浣滅粨鏋滅殑鍙兘銆?  </span></span></li> <li><span>  </span></li> <li><span>  </span></li> <li><span id="wmqeeuq" class="number">4</span><span>#姝婚攣   </span></span></li> <li><span>姝婚攣鐨勭涓€縐嶆儏鍐?  </span></li> <li><span>涓€涓敤鎴稟 璁塊棶琛ˋ(閿佷綇浜嗚〃A),鐒跺悗鍙堣闂〃B錛涘彟涓€涓敤鎴稡 璁塊棶琛˙(閿佷綇浜嗚〃B)錛岀劧鍚庝紒鍥捐闂〃A錛涜繖鏃剁敤鎴稟鐢變簬鐢ㄦ埛B宸茬粡閿佷綇琛˙錛屽畠蹇呴』絳夊緟鐢ㄦ埛B閲婃斁琛˙鎵嶈兘緇х畫錛屽悓鏍風敤鎴稡瑕佺瓑鐢ㄦ埛A閲婃斁琛ˋ鎵嶈兘緇х畫錛岃繖灝辨閿佸氨浜х敓浜嗐€?  </span></li> <li><span>瑙e喅鏂規硶錛?  </span></li> <li><span>榪欑姝婚攣姣旇緝甯歌錛屾槸鐢變簬紼嬪簭鐨凚UG浜х敓鐨勶紝闄や簡璋冩暣鐨勭▼搴忕殑閫昏緫娌℃湁鍏跺畠鐨勫姙娉曘€備粩緇嗗垎鏋愮▼搴忕殑閫昏緫錛屽浜庢暟鎹簱鐨勫琛ㄦ搷浣滄椂錛屽敖閲忔寜鐓х浉鍚岀殑欏哄簭榪涜澶勭悊錛屽敖閲忛伩鍏嶅悓鏃墮攣瀹氫袱涓祫婧愶紝濡傛搷浣淎鍜孊涓ゅ紶琛ㄦ椂錛屾€繪槸鎸夊厛A鍚嶣鐨勯『搴忓鐞嗭紝 蹇呴』鍚屾椂閿佸畾涓や釜璧勬簮鏃訛紝瑕佷繚璇佸湪浠諱綍鏃跺埢閮藉簲璇ユ寜鐓х浉鍚岀殑欏哄簭鏉ラ攣瀹氳祫婧愩€?  </span></li> <li><span>  </span></li> <li><span>姝婚攣鐨勭浜岀鎯呭喌   </span></li> <li><span>鐢ㄦ埛A鏌ヨ涓€鏉$邯褰曪紝鐒跺悗淇敼璇ユ潯綰綍錛涜繖鏃剁敤鎴稡淇敼璇ユ潯綰綍錛岃繖鏃剁敤鎴稟鐨勪簨鍔¢噷閿佺殑鎬ц川鐢辨煡璇㈢殑鍏變韓閿佷紒鍥句笂鍗囧埌鐙崰閿侊紝鑰岀敤鎴稡閲岀殑鐙崰閿佺敱浜嶢鏈夊叡浜攣瀛樺湪鎵€浠ュ繀欏葷瓑A閲婃斁鎺夊叡浜攣錛岃€孉鐢變簬B鐨勭嫭鍗犻攣鑰屾棤娉曚笂鍗囩殑鐙崰閿佷篃灝變笉鍙兘閲婃斁鍏變韓閿侊紝浜庢槸鍑虹幇浜嗘閿併€傝繖縐嶆閿佹瘮杈冮殣钄斤紝浣嗗湪紼嶅ぇ鐐圭殑欏圭洰涓粡甯稿彂鐢熴€傚鍦ㄦ煇欏圭洰涓紝欏甸潰涓婄殑鎸夐挳鐐瑰嚮鍚庯紝娌℃湁浣挎寜閽珛鍒誨け鏁堬紝浣垮緱鐢ㄦ埛浼氬嬈″揩閫熺偣鍑誨悓涓€鎸夐挳錛岃繖鏍峰悓涓€孌典唬鐮佸鏁版嵁搴撳悓涓€鏉¤褰曡繘琛屽嬈℃搷浣滐紝寰堝鏄撳氨鍑虹幇榪欑姝婚攣鐨勬儏鍐點€?  </span></li> <li><span>瑙e喅鏂規硶錛?  </span></li> <li><span id="wmqeeuq" class="number">1</span><span>銆佸浜庢寜閽瓑鎺т歡錛岀偣鍑誨悗浣垮叾绔嬪埢澶辨晥錛屼笉璁╃敤鎴烽噸澶嶇偣鍑伙紝閬垮厤瀵瑰悓鏃跺鍚屼竴鏉¤褰曟搷浣溿€?  </span></span></li> <li><span id="wmqeeuq" class="number">2</span><span>銆佷嬌鐢ㄤ箰瑙傞攣榪涜鎺у埗銆?  </span></span></li> <li><span id="wmqeeuq" class="number">3</span><span>銆佷嬌鐢ㄦ偛瑙傞攣榪涜鎺у埗銆?  </span></span></li> <li><span>  </span></li> <li><span>姝婚攣鐨勭涓夌鎯呭喌   </span></li> <li><span>濡傛灉鍦ㄤ簨鍔′腑鎵ц浜嗕竴鏉′笉婊¤凍鏉′歡鐨剈pdate璇彞錛屽垯鎵ц鍏ㄨ〃鎵弿錛屾妸琛岀駭閿佷笂鍗囦負琛ㄧ駭閿侊紝澶氫釜榪欐牱鐨勪簨鍔℃墽琛屽悗錛屽氨寰堝鏄撲駭鐢熸閿佸拰闃誨銆傜被浼肩殑鎯呭喌榪樻湁褰撹〃涓殑鏁版嵁閲忛潪甯稿簽澶ц€岀儲寮曞緩鐨勮繃灝戞垨涓嶅悎閫傜殑鏃跺€欙紝浣垮緱緇忓父鍙戠敓鍏ㄨ〃鎵弿錛屾渶緇堝簲鐢ㄧ郴緇熶細瓚婃潵瓚婃參錛屾渶緇堝彂鐢熼樆濉炴垨姝婚攣銆?  </span></li> <li><span>瑙e喅鏂規硶錛?  </span></li> <li><span>SQL璇彞涓笉瑕佷嬌鐢ㄥお澶嶆潅鐨勫叧鑱斿琛ㄧ殑鏌ヨ錛涗嬌鐢?#8220;鎵ц璁″垝”瀵筍QL璇彞榪涜鍒嗘瀽錛屽浜庢湁鍏ㄨ〃鎵弿鐨凷QL璇彞錛屽緩绔嬬浉搴旂殑绱㈠紩榪涜浼樺寲銆?nbsp;  </span></li> <img src ="http://www.aygfsteel.com/tinysun/aggbug/311949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tinysun/" target="_blank">浣曞厠鍕?/a> 2010-02-04 14:16 <a href="http://www.aygfsteel.com/tinysun/archive/2010/02/04/311949.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>HASH JOIN ,MERGE JOIN ,NESTED LOOPhttp://www.aygfsteel.com/tinysun/archive/2010/02/01/311508.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Mon, 01 Feb 2010 07:04:00 GMThttp://www.aygfsteel.com/tinysun/archive/2010/02/01/311508.htmlhttp://www.aygfsteel.com/tinysun/comments/311508.htmlhttp://www.aygfsteel.com/tinysun/archive/2010/02/01/311508.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/311508.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/311508.html
瀵逛簬Oracle鐨勪竴浜涘熀鏈煡璇嗚鍔犲己瀛︿範錛屾垜浠庣綉涓婃妱浜嗕笁涓漢瀵硅繖涓鐩殑瑙佽В涓嬫潵錛屼緵宸插弬鑰冦€?/font>
 
NESTED LOOP:

瀵逛簬琚繛鎺ョ殑鏁版嵁瀛愰泦杈冨皬鐨勬儏鍐碉紝宓屽寰幆榪炴帴鏄釜杈冨ソ鐨勯€夋嫨銆傚湪宓屽寰幆涓紝鍐?br /> 琛ㄨ澶栬〃椹卞姩錛屽琛ㄨ繑鍥炵殑姣忎竴琛岄兘瑕佸湪鍐呰〃涓绱㈡壘鍒頒笌瀹冨尮閰嶇殑琛岋紝鍥犳鏁翠釜鏌ヨ榪斿洖
鐨勭粨鏋滈泦涓嶈兘澶ぇ錛堝ぇ浜? 涓囦笉閫傚悎錛夛紝瑕佹妸榪斿洖瀛愰泦杈冨皬琛ㄧ殑浣滀負澶栬〃錛圕BO 榛樿澶栬〃鏄?br /> 椹卞姩琛級錛岃€屼笖鍦ㄥ唴琛ㄧ殑榪炴帴瀛楁涓婁竴瀹氳鏈夌儲寮曘€傚綋鐒朵篃鍙互鐢∣RDERED 鎻愮ず鏉ユ敼鍙楥BO
榛樿鐨勯┍鍔ㄨ〃錛屼嬌鐢║SE_NL(table_name1 table_name2)鍙槸寮哄埗CBO 鎵ц宓屽寰幆榪炴帴銆?br />
HASH JOIN :

鏁e垪榪炴帴鏄疌BO 鍋氬ぇ鏁版嵁闆嗚繛鎺ユ椂鐨勫父鐢ㄦ柟寮忥紝浼樺寲鍣ㄤ嬌鐢ㄤ袱涓〃涓緝灝忕殑琛紙鎴栨暟鎹?br /> 婧愶級鍒╃敤榪炴帴閿湪鍐呭瓨涓緩绔嬫暎鍒楄〃錛岀劧鍚庢壂鎻忚緝澶х殑琛ㄥ茍鎺㈡祴鏁e垪琛紝鎵懼嚭涓庢暎鍒楄〃鍖歸厤
鐨勮銆?br /> 榪欑鏂瑰紡閫傜敤浜庤緝灝忕殑琛ㄥ畬鍏ㄥ彲浠ユ斁浜庡唴瀛樹腑鐨勬儏鍐碉紝榪欐牱鎬繪垚鏈氨鏄闂袱涓〃鐨勬垚
鏈箣鍜屻€備絾鏄湪琛ㄥ緢澶х殑鎯呭喌涓嬪茍涓嶈兘瀹屽叏鏀懼叆鍐呭瓨錛岃繖鏃朵紭鍖栧櫒浼氬皢瀹冨垎鍓叉垚鑻ュ共涓嶅悓鐨?br /> 鍒嗗尯錛屼笉鑳芥斁鍏ュ唴瀛樼殑閮ㄥ垎灝辨妸璇ュ垎鍖哄啓鍏ョ鐩樼殑涓存椂孌碉紝姝ゆ椂瑕佹湁杈冨ぇ鐨勪復鏃舵浠庤€屽敖閲?br /> 鎻愰珮I/O 鐨勬€ц兘銆?br /> 涔熷彲浠ョ敤USE_HASH(table_name1 table_name2)鎻愮ず鏉ュ己鍒朵嬌鐢ㄦ暎鍒楄繛鎺ャ€傚鏋滀嬌鐢ㄦ暎
鍒楄繛鎺ASH_AREA_SIZE 鍒濆鍖栧弬鏁板繀欏昏凍澶熺殑澶э紝濡傛灉鏄?i錛孫racle寤鴻浣跨敤SQL宸ヤ綔鍖?br /> 鑷姩綆$悊錛岃緗甒ORKAREA_SIZE_POLICY 涓篈UTO錛岀劧鍚庤皟鏁碢GA_AGGREGATE_TARGET 鍗沖彲銆?br />
鎺掑簭鍚堝茍榪炴帴

閫氬父鎯呭喌涓嬫暎鍒楄繛鎺ョ殑鏁堟灉閮芥瘮鎺掑簭鍚堝茍榪炴帴瑕佸ソ錛岀劧鑰屽鏋滆婧愬凡緇忚鎺掕繃搴忥紝鍦ㄦ墽
琛屾帓搴忓悎騫惰繛鎺ユ椂涓嶉渶瑕佸啀鎺掑簭浜嗭紝榪欐椂鎺掑簭鍚堝茍榪炴帴鐨勬€ц兘浼氫紭浜庢暎鍒楄繛鎺ャ€傚彲浠ヤ嬌鐢?br /> USE_MERGE(table_name1 table_name2)鏉ュ己鍒朵嬌鐢ㄦ帓搴忓悎騫惰繛鎺?/div>
 


 
Nested loop join:

姝ラ錛氱‘瀹氫竴涓┍鍔ㄨ〃(outer table)錛屽彟涓€涓〃涓篿nner table錛岄┍鍔ㄨ〃涓殑姣忎竴琛屼笌inner琛ㄤ腑鐨勭浉搴旇褰旿OIN銆傜被浼間竴涓祵濂楃殑寰幆銆傞€傜敤浜庨┍鍔ㄨ〃鐨勮褰曢泦姣旇緝灝忥紙<10000錛夎€屼笖inner琛ㄩ渶瑕佹湁鏈夋晥鐨勮闂柟娉曪紙Index錛夈€傞渶瑕佹敞鎰忕殑鏄細JOIN鐨勯『搴忓緢閲嶈錛岄┍鍔ㄨ〃鐨勮褰曢泦涓€瀹氳灝忥紝榪斿洖緇撴灉闆嗙殑鍝嶅簲鏃墮棿鏄渶蹇殑銆?br />
cost = outer access cost + (inner access cost * outer cardinality)


| 2 | NESTED LOOPS | | 3 | 141 | 7 (15)|
| 3 | TABLE ACCESS FULL | EMPLOYEES | 3 | 60 | 4 (25)|
| 4 | TABLE ACCESS BY INDEX ROWID| JOBS | 19 | 513 | 2 (50)|
| 5 | INDEX UNIQUE SCAN | JOB_ID_PK | 1 | | |


EMPLOYEES涓簅uter table, JOBS涓篿nner table.

Hash join

姝ラ錛氬皢涓や釜琛ㄤ腑杈冨皬鐨勪竴涓湪鍐呭瓨涓瀯閫犱竴涓狧ASH琛紙瀵笿OIN KEY錛夛紝鎵弿鍙︿竴涓〃錛屽悓鏍峰JOIN KEY榪涜HASH鍚庢帰嫻嬫槸鍚﹀彲浠OIN銆傞€傜敤浜庤褰曢泦姣旇緝澶х殑鎯呭喌銆傞渶瑕佹敞鎰忕殑鏄細濡傛灉HASH琛ㄥお澶э紝鏃犳硶涓€嬈℃瀯閫犲湪鍐呭瓨涓紝鍒欏垎鎴愯嫢騫蹭釜partition錛屽啓鍏ョ鐩樼殑temporary segment錛屽垯浼氬涓€涓啓鐨勪唬浠鳳紝浼氶檷浣庢晥鐜囥€?br />
cost = (outer access cost * # of hash partitions) + inner access cost
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 665 | 13300 | 8 (25)|
| 1 | HASH JOIN | | 665 | 13300 | 8 (25)|
| 2 | TABLE ACCESS FULL | ORDERS | 105 | 840 | 4 (25)|
| 3 | TABLE ACCESS FULL | ORDER_ITEMS | 665 | 7980 | 4 (25)|
--------------------------------------------------------------------------


ORDERS涓篐ASH TABLE錛孫RDER_ITEMS鎵弿

Sort merge join

姝ラ錛氬皢涓や釜琛ㄦ帓搴忥紝鐒跺悗灝嗕袱涓〃鍚堝茍銆傞€氬父鎯呭喌涓嬶紝鍙湁鍦ㄤ互涓嬫儏鍐靛彂鐢熸椂錛屾墠浼氫嬌鐢ㄦ縐岼OIN鏂瑰紡錛?br />
1.RBO妯″紡

2.涓嶇瓑浠峰叧鑱?>,<,>=,<=,<>)

3.HASH_JOIN_ENABLED=false

4.鏁版嵁婧愬凡鎺掑簭

cost = (outer access cost * # of hash partitions) + inner access cost
 


 
杞澆biti鐨勪竴孌佃瘽:  
   
  涓句緥錛岃〃榪炴帴榪斿洖涓€鏉¤褰? 
  瀛樺湪涓や釜琛紝涓€涓?  10鏉¤褰?  錛屼竴涓?000涓囨潯璁板綍  
   
  鑻?琛ㄩ兘瀛樺湪榪炴帴瀛楁绱㈠紩錛岃嫢浠ュ皬琛ㄤ負椹卞姩琛紝鍒? 
  浠d環錛?   
  10*   (閫氳繃绱㈠紩鍦ㄥぇ琛ㄦ煡璇竴鏉¤褰曠殑浠d環)    
   
  鑻ヤ互澶ц〃涓洪┍鍔ㄨ〃錛? 
   
  1000涓?  *   (閫氳繃绱㈠紩鍦ㄥ皬琛ㄤ腑鏌ヨ涓€鏉¤褰曠殑浠d環)  
   
  閫氳繃绱㈠紩鑾峰彇涓€鏉¤褰曪紝10rows鐨勮〃錛屼唬浠烽€氬父鍦?  3   blocks    
  绱㈠紩2鍧楋紝琛ㄤ竴鍧? 
   
  鑰屽鏋滄槸1000涓囩殑琛紝绱㈠紩鍙兘杈懼埌4鍧楄〃涓€鍧? 
  榪欐牱涓€鏉ュ弬鑰冧笂闈㈢殑璁$畻錛屼綘璇村摢涓洿濂斤紵寰堟樉鐒訛紒  
   
  灝忚〃鏌ヨ鍙傝€? 
   
  SQL>   create   table   test   as   select   *   from   all_objects   where   rownum   <   11;  
   
  Table   created.  
   
  SQL>   create   index   test_index   on   test(object_id);  
   
  Index   created.  
   
  SQL>   select   object_id   from   test;  
   
  OBJECT_ID  
  ----------  
  18159  
  7781  
  4841  
  19891  
  22549  
  17099  
  17712  
  4287  
  10107  
  19135  
   
  10   rows   selected.  
   
   
  Execution   Plan  
  ----------------------------------------------------------  
  0   SELECT   STATEMENT   Optimizer=CHOOSE  
  1   0   TABLE   ACCESS   (FULL)   OF   'TEST'  
   
   
   
   
  Statistics  
  ----------------------------------------------------------  
  0   recursive   calls  
  12   db   block   gets  
  6   consistent   gets  
  0   physical   reads  
  0   redo   size  
  736   bytes   sent   via   SQL*Net   to   client  
  425   bytes   received   via   SQL*Net   from   client  
  2   SQL*Net   roundtrips   to/from   client  
  0   sorts   (memory)  
  0   sorts   (disk)  
  10   rows   processed  
   
  SQL>   select   *   from   test   where   object_id   =   4287;  
   
  OWNER   OBJECT_NAME  
  ------------------------------   ------------------------------  
  SUBOBJECT_NAME   OBJECT_ID   DATA_OBJECT_ID   OBJECT_TYPE  
  ------------------------------   ----------   --------------   ------------------  
  CREATED   LAST_DDL_   TIMESTAMP   STATUS   T   G   S  
  ---------   ---------   -------------------   -------   -   -   -  
  SYS   /1033c8a_SqlTypeWithMethods  
  4287   JAVA   CLASS  
  14-NOV-00   03-JUL-03   2003-07-03:11:18:19   INVALID   N   N   N  
   
   
   
  Execution   Plan  
  ----------------------------------------------------------  
  0   SELECT   STATEMENT   Optimizer=CHOOSE  
  1   0   TABLE   ACCESS   (BY   INDEX   ROWID)   OF   'TEST'  
  2   1   INDEX   (RANGE   SCAN)   OF   'TEST_INDEX'   (NON-UNIQUE)  
   
   
   
   
  Statistics  
  ----------------------------------------------------------  
  0   recursive   calls  
  0   db   block   gets  
  3   consistent   gets  
  0   physical   reads  
  0   redo   size  
  1157   bytes   sent   via   SQL*Net   to   client  
  425   bytes   received   via   SQL*Net   from   client  
  2   SQL*Net   roundtrips   to/from   client  
  0   sorts   (memory)  
  0   sorts   (disk)  
  1   rows   processed  

 TAG 琛ㄨ仈鎺?/a> oracle join

]]>
浠€涔堟槸鎸佷箙鍖栧拰瀵硅薄鍏崇郴鏄犲皠ORM鎶€鏈?http://www.aygfsteel.com/tinysun/archive/2009/04/23/267162.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Thu, 23 Apr 2009 07:34:00 GMThttp://www.aygfsteel.com/tinysun/archive/2009/04/23/267162.htmlhttp://www.aygfsteel.com/tinysun/comments/267162.htmlhttp://www.aygfsteel.com/tinysun/archive/2009/04/23/267162.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/267162.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/267162.html浣曡皳“鎸佷箙鍖?#8221;
鎸佷箙錛圥ersistence錛夛紝鍗蟲妸鏁版嵁錛堝鍐呭瓨涓殑瀵硅薄錛変繚瀛樺埌鍙案涔呬繚瀛樼殑瀛樺偍璁懼涓紙濡傜鐩橈級銆傛寔涔呭寲鐨勪富瑕佸簲鐢ㄦ槸灝嗗唴瀛樹腑鐨勬暟鎹瓨鍌ㄥ湪鍏崇郴鍨嬬殑鏁版嵁搴撲腑錛屽綋鐒朵篃鍙互瀛樺偍鍦ㄧ鐩樻枃浠朵腑銆乆ML鏁版嵁鏂囦歡涓瓑絳夈€?

浣曡皳“鎸佷箙灞?#8221;
鎸佷箙灞傦紙Persistence Layer錛夛紝鍗充笓娉ㄤ簬瀹炵幇鏁版嵁鎸佷箙鍖栧簲鐢ㄩ鍩熺殑鏌愪釜鐗瑰畾緋葷粺鐨勪竴涓€昏緫灞傞潰錛屽皢鏁版嵁浣跨敤鑰呭拰鏁版嵁瀹炰綋鐩稿叧鑱斻€?/p>

浣曡皳“瀵硅薄鏁版嵁鏄犲皠錛圤RM錛?#8221;
ORM-Object/Relational Mapper錛屽嵆“瀵硅薄-鍏崇郴鍨嬫暟鎹槧灝勭粍浠?#8221;銆傚浜嶰/R錛屽嵆 Object錛堝璞★級鍜?Relational錛堝叧緋誨瀷鏁版嵁錛夛紝琛ㄧず蹇呴』鍚屾椂浣跨敤闈㈠悜瀵硅薄鍜屽叧緋誨瀷鏁版嵁榪涜寮€鍙戙€?/p>

澶囨敞錛氬緩妯¢鍩熶腑鐨?ORM 涓?Object/Role Modeling錛堝璞¤鑹插緩妯★級銆傚彟澶栬繖閲屾槸“O/R Mapper”鑰岄潪“O/R Mapping”銆傜浉瀵規潵璁詫紝O/R Mapping 鎻忚堪鐨勬槸涓€縐嶈璁℃€濇兂鎴栬€呭疄鐜版満鍒訛紝鑰?O/R Mapper鎸囦互O/R鍘熺悊璁捐鐨勬寔涔呭寲妗嗘灦錛團ramework錛夛紝鍖呮嫭 O/R鏈哄埗榪樻湁 SQL鑷敓鎴愶紝浜嬪姟澶勭悊錛孋ache綆$悊絳夈€?/p>


闄や簡 ORM 鎶€鏈紝榪樻湁浠ヤ笅鍑犵鎸佷箙鍖栨妧鏈?/p>

涓誨姩鍩熷璞℃ā寮?br /> 瀹冩槸鍦ㄥ疄鐜頒腑灝佽浜嗗叧緋繪暟鎹ā鍨嬪拰鏁版嵁璁塊棶緇嗚妭鐨勪竴縐嶅艦寮忋€傚湪 J2EE 鏋舵瀯涓紝EJB 緇勪歡鍒嗕負浼氳瘽 EJB 鍜屽疄浣?EJB銆備細璇?EJB 閫氬父瀹炵幇涓氬姟閫昏緫錛岃€屽疄浣?EJB 琛ㄧず涓氬姟瀹炰綋銆傚疄浣?EJB 鍙堝垎涓轟袱縐嶏細鐢?EJB 鏈韓綆$悊鎸佷箙鍖栵紝鍗?BMP錛圔ean-Managed Persistence錛夛紱鏈?EJB 瀹瑰櫒綆$悊鎸佷箙鍖栵紝鍗?CMP錛圕ontainer-Managed Persistence錛夈€侭M P灝辨槸涓誨姩鍩熷璞℃ā寮忕殑涓€涓緥瀛愶紝BMP 琛ㄧず鐢卞疄浣?EJB 鑷韓綆$悊鏁版嵁璁塊棶緇嗚妭銆?br /> 涓誨姩鍩熷璞℃湰韜綅浜庝笟鍔¢€昏緫灞傦紝鍥犳閲囩敤涓誨姩鍩熷璞℃ā寮忔椂錛屾暣涓簲鐢ㄤ粛鐒舵槸涓夊眰搴旂敤緇撴瀯錛屽茍娌℃湁浠庝笟鍔¢€昏緫灞傚垎紱誨嚭鐙珛鐨勬寔涔呭寲灞傘€?/p>

JDO 妯″紡
Java Data Objects錛圝DO錛夋槸 SUN 鍏徃鍒跺畾鐨勬弿榪板璞℃寔涔呭寲璇箟鐨勬爣鍑咥PI銆備弗鏍肩殑璇達紝JDO 騫朵笉鏄璞?鍏崇郴鏄犲皠鎺ュ彛錛屽洜涓哄畠鏀寔鎶婂璞℃寔涔呭寲鍒頒換鎰忎竴縐嶅瓨鍌ㄧ郴緇熶腑錛屽寘鎷?鍏崇郴鏁版嵁搴撱€侀潰鍚戝璞$殑鏁版嵁搴撱€佸熀浜?XML 鐨勬暟鎹簱錛屼互鍙婂叾浠栦笓鏈夊瓨鍌ㄧ郴緇熴€傜敱浜庡叧緋繪暟鎹簱鏄洰鍓嶆渶嫻佽鐨勫瓨鍌ㄧ郴緇燂紝璁稿 JDO 鐨勫疄鐜伴兘鍖呭惈浜嗗璞?鍏崇郴鏄犲皠鏈嶅姟銆?/p>

CMP 妯″紡
鍦?J2EE 鏋舵瀯涓紝CMP錛圕ontainer-Managed Persistence錛夎〃紺虹敱 EJB 瀹瑰櫒鏉ョ鐞嗗疄浣?EJB 鐨勬寔涔呭寲錛孍JB 瀹瑰櫒灝佽浜嗗璞?鍏崇郴鐨勬槧灝勫強鏁版嵁璁塊棶緇嗚妭銆侰MP 鍜?ORM 鐨勭浉浼間箣澶勫湪浜庯紝涓よ€呴兘鎻愪緵瀵硅薄-鍏崇郴鏄犲皠鏈嶅姟錛岄兘鎶婂璞℃寔涔呭寲鐨勪換鍔′粠涓氬姟閫昏緫涓垎紱誨嚭鏉ャ€傚尯鍒湪浜?CMP 璐熻矗鎸佷箙鍖栧疄浣?EJB 緇勪歡錛岃€?ORM 璐熻矗鎸佷箙鍖?POJO錛屽畠鏄櫘閫氱殑鍩轟簬 Java Bean 褰㈠紡鐨勫疄浣撳煙瀵硅薄銆?/p>

涓€鑸妸鍩轟簬 Java Bean 褰㈠紡鐨勫疄浣撳煙瀵硅薄縐頒負 POJO錛圥lain Old Java Object錛夛紝鎰忎負鍙堟櫘閫氬張鍙よ€佺殑 Java 瀵硅薄鐨勬剰鎬濄€傞殢鐫€鍚勭 ORM 鏄犲皠宸ュ叿鐨勬棩瓚嬫垚鐔熷拰嫻佽錛孭OJO鏈夐噸鐜板厜褰╋紝瀹冨拰鍩轟簬 CMP 鐨勫疄浣?EJB 鐩告瘮錛屽嵆綆€鍗曞張鍏鋒湁寰堥珮鐨勫彲縐繪鎬э紝鍥犳鑱斿悎浣跨敤 ORM 鏄犲皠宸ュ叿鍜?POJO錛屽凡緇忔垚涓轟竴縐嶈秺鏉ヨ秺鍙楁榪庣殑涓旂敤鏉ュ彇浠?CMP 鐨勬寔涔呭寲鏂規銆侾OJO 鐨勭己鐐瑰氨鏄棤娉曞仛榪滅▼璋冪敤錛屼笉鏀寔鍒嗗竷寮忚綆椼€?/p>


涓轟粈涔堣鍋氭寔涔呭寲鍜孫RM璁捐

鍦ㄧ洰鍓嶇殑浼佷笟搴旂敤緋葷粺璁捐涓紝MVC錛屽嵆 Model錛堟ā鍨嬶級- View錛堣鍥撅級- Control錛堟帶鍒訛級涓轟富瑕佺殑緋葷粺鏋舵瀯妯″紡銆侻VC 涓殑 Model 鍖呭惈浜嗗鏉傜殑涓氬姟閫昏緫鍜屾暟鎹€昏緫錛屼互鍙婃暟鎹瓨鍙栨満鍒訛紙濡?JDBC鐨勮繛鎺ャ€丼QL鐢熸垚鍜孲tatement鍒涘緩銆佽繕鏈塕esultSet緇撴灉闆嗙殑璇誨彇絳夛級絳夈€傚皢榪欎簺澶嶆潅鐨勪笟鍔¢€昏緫鍜屾暟鎹€昏緫鍒嗙錛屼互灝嗙郴緇熺殑绱ц€﹀悎鍏崇郴杞寲涓烘澗鑰﹀悎鍏崇郴錛堝嵆瑙h€﹀悎錛夛紝鏄檷浣庣郴緇熻€﹀悎搴﹁揩鍒囪鍋氱殑錛屼篃鏄寔涔呭寲瑕佸仛鐨勫伐浣溿€侻VC 妯″紡瀹炵幇浜嗘灦鏋勪笂灝嗚〃鐜板眰錛堝嵆View錛夊拰鏁版嵁澶勭悊灞傦紙鍗矼odel錛夊垎紱葷殑瑙h€﹀悎錛岃€屾寔涔呭寲鐨勮璁″垯瀹炵幇浜嗘暟鎹鐞嗗眰鍐呴儴鐨勪笟鍔¢€昏緫鍜屾暟鎹€昏緫鍒嗙鐨勮В鑰﹀悎銆傝€?ORM 浣滀負鎸佷箙鍖栬璁′腑鐨勬渶閲嶈涔熸渶澶嶆潅鐨勬妧鏈紝涔熸槸鐩墠涓氱晫鐑偣鎶€鏈€?/p>

綆€鍗曟潵璇達紝鎸夐€氬父鐨勭郴緇熻璁★紝浣跨敤 JDBC 鎿嶄綔鏁版嵁搴擄紝涓氬姟澶勭悊閫昏緫鍜屾暟鎹瓨鍙栭€昏緫鏄販鏉傚湪涓€璧風殑銆?br /> 涓€鑸熀鏈兘鏄涓嬪嚑涓楠わ細
1銆佸緩绔嬫暟鎹簱榪炴帴錛岃幏寰?Connection 瀵硅薄銆?br /> 2銆佹牴鎹敤鎴風殑杈撳叆緇勮鏌ヨ SQL 璇彞銆?br /> 3銆佹牴鎹?SQL 璇彞寤虹珛 Statement 瀵硅薄 鎴栬€?PreparedStatement 瀵硅薄銆?br /> 4銆佺敤 Connection 瀵硅薄鎵ц SQL璇彞錛岃幏寰楃粨鏋滈泦 ResultSet 瀵硅薄銆?br /> 5銆佺劧鍚庝竴鏉′竴鏉¤鍙栫粨鏋滈泦 ResultSet 瀵硅薄涓殑鏁版嵁銆?br /> 6銆佹牴鎹鍙栧埌鐨勬暟鎹紝鎸夌壒瀹氱殑涓氬姟閫昏緫榪涜璁$畻銆?br /> 7銆佹牴鎹綆楀緱鍒扮殑緇撴灉鍐嶇粍瑁呮洿鏂?SQL 璇彞銆?br /> 8銆佸啀浣跨敤 Connection 瀵硅薄鎵ц鏇存柊 SQL 璇彞錛屼互鏇存柊鏁版嵁搴撲腑鐨勬暟鎹€?br /> 7銆佹渶鍚庝緷嬈″叧闂悇涓?Statement 瀵硅薄鍜?Connection 瀵硅薄銆?/p>

鐢變笂鍙湅鍑轟唬鐮侀€昏緫闈炲父澶嶆潅錛岃繖榪樹笉鍖呮嫭鏌愭潯璇彞鎵ц澶辮觸鐨勫鐞嗛€昏緫銆傚叾涓殑涓氬姟澶勭悊閫昏緫鍜屾暟鎹瓨鍙栭€昏緫瀹屽叏娣鋒潅鍦ㄤ竴鍧椼€傝€屼竴涓畬鏁寸殑緋葷粺瑕佸寘鍚垚鍗冧笂涓囦釜榪欐牱閲嶅鐨勮€屽張娣鋒潅鐨勫鐞嗚繃紼嬶紝鍋囧瑕佸鍏朵腑鏌愪簺涓氬姟閫昏緫鎴栬€呬竴浜涚浉鍏寵仈鐨勪笟鍔℃祦紼嬪仛淇敼錛岃鏀瑰姩鐨勪唬鐮侀噺灝嗕笉鍙兂璞°€傚彟涓€鏂歸潰錛屽亣濡傝鎹㈡暟鎹簱浜у搧鎴栬€呰繍琛岀幆澧冧篃鍙兘鏄釜涓嶅彲鑳藉畬鎴愮殑浠誨姟銆傝€岀敤鎴風殑榪愯鐜鍜岃姹傚嵈鍗冨樊涓囧埆錛屾垜浠笉鍙兘涓烘瘡涓€涓敤鎴鋒瘡涓€縐嶈繍琛岀幆澧冭璁′竴濂椾竴鏍風殑緋葷粺銆?br /> 鎵€浠ュ氨瑕佸皢涓€鏍風殑澶勭悊浠g爜鍗充笟鍔¢€昏緫鍜屽彲鑳戒笉涓€鏍風殑澶勭悊鍗蟲暟鎹瓨鍙栭€昏緫鍒嗙寮€鏉ワ紝鍙︿竴鏂歸潰錛屽叧緋誨瀷鏁版嵁搴撲腑鐨勬暟鎹熀鏈兘鏄互涓€琛岃鐨勬暟鎹繘琛屽瓨鍙栫殑錛岃€岀▼搴忚繍琛屽嵈鏄竴涓釜瀵硅薄榪涜澶勭悊錛岃€岀洰鍓嶅ぇ閮ㄥ垎鏁版嵁搴撻┍鍔ㄦ妧鏈紙濡侫DO.NET銆丣DBC銆丱DBC絳夌瓑錛夊潎鏄互琛岄泦鐨勭粨鏋滈泦涓€鏉℃潯榪涜澶勭悊鐨勩€傛墍浠ヤ負瑙e喅榪欎竴鍥伴毦錛屽氨鍑虹幇 ORM 榪欎竴涓璞″拰鏁版嵁涔嬮棿鏄犲皠鎶€鏈€?/p>

涓句緥鏉ヨ錛屾瘮濡傝瀹屾垚涓€涓喘鐗╂墦鎶樹績閿€鐨勭▼搴忥紝鐢?ORM 鎬濇兂灝嗗涓嬪疄鐜幫紙寮曡嚜銆婃繁鍏ユ祬鍑篐ibernate銆嬶級錛?br /> 涓氬姟閫昏緫濡備笅錛?br /> public Double calcAmount(String customerid, double amount)
{
    // 鏍規嵁瀹㈡埛ID鑾峰緱瀹㈡埛璁板綍
    Customer customer = CustomerManager.getCustomer(custmerid);
    // 鏍規嵁瀹㈡埛絳夌駭鑾峰緱鎵撴姌瑙勫垯
    Promotion promotion = PromotionManager.getPromotion(customer.getLevel());
    // 绱Н瀹㈡埛鎬繪秷璐歸錛屽茍淇濆瓨绱緇撴灉
    customer.setSumAmount(customer.getSumAmount().add(amount);
    CustomerManager.save(customer);
    // 榪斿洖鎵撴姌鍚庣殑閲戦
    return amount.multiply(protomtion.getRatio());
}
榪欐牱浠g爜灝遍潪甯告竻鏅頒簡錛岃€屼笖涓庢暟鎹瓨鍙栭€昏緫瀹屽叏鍒嗙銆傝璁′笟鍔¢€昏緫浠g爜鐨勬椂鍊欏畬鍏ㄤ笉闇€瑕佽€冭檻鏁版嵁搴揓DBC鐨勯偅浜涘崈綃囦竴寰嬬殑鎿嶄綔錛岃€屽皢瀹冧氦緇?CustomerManager 鍜?PromotionManager 涓や釜綾誨幓瀹屾垚銆傝繖灝辨槸涓€涓畝鍗曠殑 ORM 璁捐錛屽疄闄呯殑 ORM 瀹炵幇妗嗘灦姣旇繖涓澶嶆潅鐨勫銆?/p>


鐩墠鏈夊摢浜涙祦琛岀殑 ORM 浜у搧
鐩墠浼楀鍘傚晢鍜屽紑婧愮ぞ鍖洪兘鎻愪緵浜嗘寔涔呭眰妗嗘灦鐨勫疄鐜幫紝甯歌鐨勬湁
Apache OJB 錛?a >http://db.apache.org/ojb/錛?br /> Cayenne 錛?a >http://objectstyle.org/cayenne/錛?br /> Jaxor 錛?a >http://jaxor.sourceforge.net錛?br /> Hibernate 錛?a >http://www.hibernate.org錛?br /> iBatis 錛?a >http://www.ibatis.com錛?br /> jRelationalFramework 錛?a >http://ijf.sourceforge.net錛?br /> mirage 錛?a >http://itor.cq2.org/en/oss/mirage/toon錛?br /> SMYLE 錛?a >http://www.drjava.de/smyle錛?br /> TopLink 錛?a >http://otn.oracle.com/products/ias/toplink/index.html錛?br /> 鍏朵腑 TopLink 鏄?Oracle 鐨勫晢涓氫駭鍝侊紝鍏朵粬鍧囦負寮€婧愰」鐩€?/p>

鍏朵腑 Hibernate 鐨勮交閲忕駭 ORM 妯″瀷閫愭紜珛浜嗗湪 Java ORM 鏋舵瀯涓瀵煎湴浣嶏紝鐢氳嚦鍙栦唬澶嶆潅鑰屽張綣佺悙鐨?EJB 妯″瀷鑰屾垚涓轟簨瀹炰笂鐨?Java ORM 宸ヤ笟鏍囧噯銆傝€屼笖鍏朵腑鐨勮澶氳璁″潎琚?J2EE 鏍囧噯緇勭粐鍚哥撼鑰屾垚涓烘渶鏂?EJB 3.0 瑙勮寖鐨勬爣鍑嗭紝榪欎篃鏄紑婧愰」鐩獎鍝嶅伐涓氶鍩熸爣鍑嗙殑鏈夊姏瑙佽瘉銆?/p>
http://www.aygfsteel.com/fyz210/archive/2007/05/22/119098.html


]]>
ORM鎶€鏈蹇典笌瀹炰緥http://www.aygfsteel.com/tinysun/archive/2009/04/23/267150.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Thu, 23 Apr 2009 07:02:00 GMThttp://www.aygfsteel.com/tinysun/archive/2009/04/23/267150.htmlhttp://www.aygfsteel.com/tinysun/comments/267150.htmlhttp://www.aygfsteel.com/tinysun/archive/2009/04/23/267150.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/267150.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/267150.htmlObject Relational MappingORMORM鏈川涓婂氨鏄皢鏁版嵁浠庝竴縐嶅艦寮忚漿鎹㈠埌鍙﹀涓€縐嶅艦寮忋€?榪欎篃鍚屾椂鏆楃ず鑰呴澶栫殑鎵ц寮€閿€錛涚劧鑰岋紝濡傛灉ORM浣滀負涓€縐嶄腑闂翠歡瀹炵幇錛屽垯浼氭湁寰堝鏈轟細鍋氫紭鍖栵紝鑰岃繖浜涘湪鎵嬪啓鐨勬寔涔呭眰騫朵笉瀛樺湪銆?.

瀵硅薄鍏崇郴鏄犲皠錛?/span>錛岀畝縐?/span>錛夛紝鏄殢鐫€闈㈠悜瀵硅薄鐨勮蔣浠跺紑鍙戞柟娉曞彂灞曡€屼駭鐢熺殑闈㈠悜瀵硅薄鐨勫紑鍙戞柟娉曟槸褰撲粖浼佷笟綰у簲鐢ㄥ紑鍙戠幆澧冧腑鐨勪富嫻佸紑鍙戞柟娉曪紝鍏崇郴鏁版嵁搴撴槸浼佷笟綰у簲鐢ㄧ幆澧冧腑姘鎬箙瀛樻斁鏁版嵁鐨勪富嫻佹暟鎹瓨鍌ㄧ郴緇熴€?/span>闈㈠悜瀵硅薄鏄粠杞歡宸ョ▼鍩烘湰鍘熷垯(濡傝€﹀悎銆佽仛鍚堛€佸皝瑁?鐨勫熀紜€涓婂彂灞曡搗鏉ョ殑錛岃€屽叧緋繪暟鎹簱鍒欐槸浠庢暟瀛︾悊璁哄彂灞曡€屾潵鐨勶紝涓ゅ鐞嗚瀛樺湪鏄捐憲鐨勫尯鍒€備負浜嗚В鍐寵繖涓笉鍖歸厤鐨勭幇璞?瀵硅薄鍏崇郴鏄犲皠鎶€鏈簲榪愯€岀敓銆?/span>

璁╂垜浠粠O/R寮€濮嬨€傚瓧姣峅璧鋒簮浜?瀵硅薄"(Object),鑰孯鍒欐潵鑷簬"鍏崇郴"(Relational)銆傚嚑涔庢墍鏈夌殑紼嬪簭閲岄潰錛岄兘瀛樺湪瀵硅薄鍜屽叧緋繪暟鎹簱銆傚湪涓氬姟閫昏緫灞傚拰鐢ㄦ埛鐣岄潰灞備腑錛屾垜浠槸闈㈠悜瀵硅薄鐨勩€傚綋瀵硅薄淇℃伅鍙戠敓鍙樺寲鐨勬椂鍊欙紝鎴戜滑闇€瑕佹妸瀵硅薄鐨勪俊鎭繚瀛樺湪鍏崇郴鏁版嵁搴撲腑銆?/span>

褰撲綘寮€鍙戜竴涓簲鐢ㄧ▼搴忕殑鏃跺€?涓嶄嬌鐢∣/R Mapping),浣犲彲鑳戒細鍐欎笉灝戞暟鎹闂眰鐨勪唬鐮侊紝鐢ㄦ潵浠庢暟鎹簱淇濆瓨錛屽垹闄わ紝璇誨彇瀵硅薄淇℃伅錛岀瓑絳夈€備綘鍦―AL涓啓浜嗗緢澶氱殑鏂規硶鏉ヨ鍙栧璞℃暟鎹紝鏀瑰彉鐘舵€佸璞$瓑絳変換鍔°€傝€岃繖浜涗唬鐮佸啓璧鋒潵鎬繪槸閲嶅鐨勩€?/span>

u          CRUDAPIu          APIu          mapping metadatau          ORMdirty checking, lazy association fetchingORM,,,.

:



]]>

http://www.jeez.com.cn/jbf

鍩虹鐭ヨ瘑錛氬甫浣犱簡瑙f渶甯歌鐨?3涓暟鎹簱鏈http://www.aygfsteel.com/tinysun/archive/2009/02/22/256042.html浣曞厠鍕?/dc:creator>浣曞厠鍕?/author>Sun, 22 Feb 2009 07:56:00 GMThttp://www.aygfsteel.com/tinysun/archive/2009/02/22/256042.htmlhttp://www.aygfsteel.com/tinysun/comments/256042.htmlhttp://www.aygfsteel.com/tinysun/archive/2009/02/22/256042.html#Feedback0http://www.aygfsteel.com/tinysun/comments/commentRss/256042.htmlhttp://www.aygfsteel.com/tinysun/services/trackbacks/256042.html
1錛庡叧緋繪ā鍨嬶細鐢ㄤ簩緇磋〃鏍肩粨鏋勮〃紺哄疄浣撻泦錛屽閿〃紺哄疄浣撻棿鑱旂郴鐨勬暟鎹ā鍨嬬О涓哄叧緋繪ā鍨嬨€傚叧緋繪ā鍨嬫槸鐢辮嫢騫蹭釜鍏崇郴妯″紡緇勬垚鐨勯泦鍚堛€?

2錛庡叧緋繪ā寮忥細鍏崇郴妯″紡瀹為檯涓婂氨鏄褰曠被鍨嬨€傚畠鍖呮嫭錛氭ā寮忓悕錛屽睘鎬у悕錛屽€煎煙鍚嶄互鍙婃ā寮忕殑涓婚敭銆傚叧緋繪ā寮忎粎鏄鏁版嵁鐗規€х殑鎻忚堪銆?

3錛庡叧緋誨疄渚嬶細灝辨槸涓€涓叧緋伙紝鍗充竴寮犱簩緇磋〃鏍箋€?

4錛庡睘鎬э細鍦ㄥ叧緋繪ā鍨嬩腑錛屽瓧孌電О涓哄睘鎬с€?

5錛庡煙錛氬湪鍏崇郴涓紝姣忎竴涓睘鎬ч兘鏈変竴涓彇鍊艱寖鍥達紝縐頒負灞炴€х殑鍊煎煙銆?

6錛庡厓緇勶細鍦ㄥ叧緋諱腑錛岃褰曠О涓哄厓緇勩€?

7錛庡€欓€夌爜錛氬湪鍏崇郴涓兘鍞竴鏍囪瘑鍏冪粍鐨勫睘鎬ч泦縐頒負鍏崇郴妯″紡鐨勫€欓€夌爜銆?

8錛庝富鐮侊細鐢ㄦ埛閫変綔鍏冪粍鏍囪瘑鐨勪竴涓€欓€夌爜涓轟富鐮併€?

9錛庡鐮侊細鏌愪釜鍏崇郴鐨勪富鐮佺浉搴旂殑灞炴€у湪鍙︿竴鍏崇郴涓嚭鐜幫紝姝ゆ椂璇ヤ富鐮佸湪灝辨槸鍙︿竴鍏崇郴鐨勫鐮侊紝濡傛湁涓や釜鍏崇郴S鍜孲C,鍏朵腑S#鏄叧緋籗鐨勪富鐮侊紝鐩稿簲鐨勫睘鎬#鍦ㄥ叧緋籗C涓篃鍑虹幇錛屾鏃禨#灝辨槸鍏崇郴SC鐨勫鐮併€?

10錛庡疄浣撳畬鏁存€ц鍒欙細榪欐潯瑙勫垯瑕佹眰鍏崇郴涓厓緇勫湪緇勬垚涓葷爜鐨勫睘鎬т笂涓嶈兘鏈夌┖鍊箋€傚鏋滃嚭鐜扮┖鍊鹼紝閭d箞涓葷爜鍊煎氨璧蜂笉浜嗗敮涓€鏍囪瘑鍏冪粍鐨勪綔鐢ㄣ€?

11錛庡弬鐓у畬鏁存€ц鍒欙細榪欐潯瑙勫垯瑕佹眰“涓嶅紩鐢ㄤ笉瀛樺湪鐨勫疄浣?#8221;銆傚叾褰㈠紡瀹氫箟濡備笅錛氬鏋滃睘鎬ч泦K鏄叧緋繪ā寮廟1鐨勪富鐮侊紝K涔熸槸鍏崇郴妯″紡R2鐨勫鐮侊紝閭d箞R2鐨勫叧緋諱腑錛孠鐨勫彇鍊煎彧鍏佽鏈変袱縐嶅彲鑳斤紝鎴栬€呬負絀哄€鹼紝鎴栬€呯瓑浜嶳1鍏崇郴涓煇涓富鐮佸€箋€?

榪欐潯瑙勫垯鍦ㄤ嬌鐢ㄦ椂鏈変笁鐐瑰簲娉ㄦ剰錛?

(1)澶栫爜鍜岀浉搴旂殑涓葷爜鍙互涓嶅悓鍚嶏紝鍙瀹氫箟鍦ㄧ浉鍚屽€煎煙涓婂嵆鍙€?

(2)R1鍜孯2涔熷彲浠ユ槸鍚屼竴涓叧緋繪ā寮忥紝琛ㄧず浜嗗睘鎬т箣闂寸殑鑱旂郴銆?

(3)澶栫爜鍊兼槸鍚﹀厑璁哥┖搴旇鍏蜂綋闂鑰屽畾銆?

12錛庤繃紼嬫€ц璦€錛氬湪緙栫▼鏃跺繀欏葷粰鍑鴻幏寰楃粨鏋滅殑鎿嶄綔姝ラ錛屽嵆“騫蹭粈涔?#8221;鍜?#8220;鎬庝箞騫?#8221;銆傚Pascal鍜孋璇█絳夈€?

13錛庨潪榪囩▼鎬ц璦€錛氱紪紼嬫椂鍙』鎸囧嚭闇€瑕佷粈涔堜俊鎭紝涓嶅繀緇勫嚭鍏蜂綋鐨勬搷浣滄楠ょ殑璇█錛屽悇縐嶅叧緋繪煡璇㈣璦€鍧囧睘浜庨潪榪囩▼鎬ц璦€銆?/div>

]]>
主站蜘蛛池模板: 成安县| 崇义县| 包头市| 祥云县| 巴中市| 威海市| 海安县| 恭城| 大埔县| 灌南县| 梓潼县| 浮山县| 奉新县| 洛宁县| 通江县| 肇庆市| 子长县| 蚌埠市| 承德市| 从化市| 双峰县| 甘谷县| 古蔺县| 稷山县| 闵行区| 金沙县| 白水县| 孟津县| 彭阳县| 凤城市| 南宁市| 察雅县| 吉林市| 鄂托克前旗| 伊金霍洛旗| 延边| 北海市| 洪雅县| 麦盖提县| 股票| 玛纳斯县|