当前位置: 首页 > 后端技术 > Java

面试官听了我对redolog和binlog原理的讲解,脸都红了!

时间:2023-04-01 18:16:27 Java

鎴戞湁涓€涓€佹湅鍙嬶紝鎴戜滑閮藉彨浠栫唺鐚€傚彂闄呯嚎瑙﹀強鍚庤剳鍕猴紝澶ч噾涓濊竟鐪奸暅涔熼伄涓嶄綇榛戠溂鍦堬紝涓€鍓€滅▼搴忓憳鈥濈殑妯℃牱锛涗粬鐨勭┛鎼篃寰堜笉鎷樹竴鏍硷紝涓婂崐韬槸琛~瑗胯锛屼笅鍗婅韩鏄墰浠旇¥鎷栭瀷~鎴戝拰Panda鐨勫叧绯诲緢濂姐€傛瘯涓氬悗浠栧幓浜嗕笂娴凤紝鎴戝紑濮嬩簡鍖楁紓锛屼絾姣忔鏀惧亣鍥炶€佸閮戒細鍜屾湅鍙嬭仛椁愶紝杩欐鍥炲杩囧勾涔熶笉渚嬪銆傝繖娆℃垜浠嚑涓皬浼欎即鍘讳簡鏋e簞寰堟湁鍚嶇殑鈥滃ソ鍦ㄦ潵鍦熼鍘呪€濓紝鐐逛簡鏋e簞鐗硅壊鐨勯夯杈i浮锛岃秴绾уぇ涓€鐩樸€傝繖娆″湪楗涓婏紝鑱婅捣浜嗙柅鎯呮湡闂存垜浠嚑涓汉绉瀬鍙備笌鍚勫ぇ鍘傚厤璐归噰璁跨殑涓€浜涜叮浜嬨€侾anda璇达紝鍦ㄤ竴娆″ぇ鍨嬫暟鎹瓨鍌ㄥ叕鍙哥殑闈㈣瘯涓紝浠栨寲鍒颁簡涓€涓狹ySQL鐨勯棶棰橈紝redolog鍜宐inlog锛屽緢鏈夋剰鎬濄€傚彟澶栵紝MySQL绯诲垪闈㈣瘯棰樺拰绛旀閮芥暣鐞嗗ソ浜嗐€傚井淇℃悳绱ava鎶€鏈爤锛屽悗鍙板彂閫侊細闈㈣瘯锛岀綉涓婂彲浠ョ湅銆傞潰璇曞畼涔熷緢鏈夌ぜ璨岋紝鎬绘湁绉嶈帿鍚嶇殑浜插垏鎰熴€傝鐫€锛屼粬鎶捣鑵垮枈閬擄細鈥滆€佸ぇ锛屽張鏉ヤ竴鐩掗潚宀涘暏閰掞紒鈥濇垜浠兘鐭ラ亾鐔婄尗瑕佸紑濮嬮噸鎾簡~~涓嬮潰鏄唺鐚拰闈㈣瘯瀹橀┈缁忕悊鐨勫璇濄€傜唺鐚細椹€︹€﹂┈鍝ヤ綘濂斤紒闈㈣瘯瀹橈細鍛冣€︹€︿綘濂斤紝灏忔潕锛岀畝鍘嗕笂鍐欑潃浣犵簿閫歁ySQL浜嬪姟鍜屾棩蹇楀師鐞嗐€備綘璁や负搴旇杈惧埌浠€涔堟按骞筹紵鐔婄尗锛堣€佽劯绾級锛歟mmm鈥︹€︾啛缁冨氨鏄瘮闈㈣瘯瀹樻噦寰楀涓€鐐广€?闈㈣瘯瀹橈細锛堝棷鈥︹€﹁€佸疄浜猴紝鎴戝枩娆紒锛夐潰璇曞畼锛氶偅鍏堣璇碝ySQL涓瘮杈冮噸瑕佺殑鏃ュ織鍚э紵鐔婄尗锛氾紙鎴戝彧鐪嬩簡redolog鍜宐inlog闈㈣瘯棰橈紝浣犲湪骞蹭粈涔堬紝璇村浜嗕細涓嶄細缁欒嚜宸辨寲鍧戯紵鎴戣寰楅瞾杩呭ぇ鍙旇杩囷細涓嶈皥JB锛屾渶鍚庨獥鑷繁锛夌唺鐚細鏄殑銆?鍏跺疄MySQL閲岄潰鏈夊緢澶氭棩蹇楋紝浣嗘槸鎴戞棩甯告帴瑙︽渶澶氱殑灏辨槸閲嶅仛鏃ュ織锛屽綊妗f棩蹇楋紙binlog锛夛紝褰撶劧杩樻湁undo鏃ュ織绛夌瓑锛屾垜鎺ヨЕ鐨勬瘮杈冨皯銆侻ySQL鏃ュ織涓昏鍖呮嫭鍏绫诲瀷锛氶噸鍋氭棩蹇楋紙redolog锛夈€佸洖婊氭棩蹇楋紙undolog锛夈€佸綊妗f棩蹇楋紙binlog锛夈€侀敊璇棩蹇楋紙errorlog锛夈€佹參鏌ヨ鏃ュ織锛坰lowquerylog锛夈€侀€氱敤鏌ヨ鏃ュ織锛坓enerallog锛夈€佷腑缁ф棩蹇楋紙relaylog锛夐潰璇曞畼锛氬ソ鐨勶紝鎴戜滑鍏堣璇翠綘瀵归噸鍋氭棩蹇楃殑鐞嗚В銆傜唺鐚細鎴戣寰楀皬鏃跺€欑湅銆婃鏋楀浼犮€嬶紝闄嗙鎵嶇殑鏌滃彴涓嬫湁涓€鍧楀皬榛戞澘銆傚綋鏃朵笉鐭ラ亾鏄仛浠€涔堢敤鐨勶紝鍚庢潵鎵嶇煡閬撴槸涓撻棬鐢ㄦ潵璁板綍瀹㈡埛鐨勪俊鐢ㄨ褰曠殑銆傚鏋滆祳璐︾殑浜轰笉澶氾紝閭d粬灏卞彲浠ユ妸瀹㈡埛鐨勫悕瀛楀拰鎴峰彛鍐欏湪榛戞澘涓娿€備絾濡傛灉璧婅处鐨勪汉澶氫簡锛屽皬榛戞澘灏辨斁涓嶄笅浜嗭紝杩欐椂鍊欒涔︿汉灏卞繀椤绘湁涓€鏈笓闂ㄨ璐︾殑璐︽湰銆傚鏋滄湁浜鸿璐疯鎴栧伩杩樺€哄姟锛屽鑰呬滑涓€鑸湁涓ょ鏂规硶锛氫竴绉嶆槸鐩存帴缈诲嚭璐︾翱锛屽鏈鐨勮捶璁拌处鎴疯繘琛屽鍑忥紱杩欐鐨勮处锛屾垜浼氭妸璐︽湰缈昏繃鏉ワ紝缁撹处涔嬪悗鍐嶇畻銆傜敓鎰忓叴闅嗙殑鏃跺€欙紝绉€鎵嶈偗瀹氫細閫夋嫨鍚庤€咃紝鍥犱负鐩存帴璁拌处澶夯鐑︿簡銆備綘寰楀厛鏌ュ埌淇$敤鎴峰彛鎸佹湁浜虹殑鈥滄棫閽扁€濊褰曘€傝处鏈瘑瀵嗛夯楹伙紝瓒宠冻鏈夊嚑鍗侀〉銆傛壘鍒板悗锛屾嬁鍑虹畻鐩樿绠楋紝鏈€鍚庢洿鏂板埌璐︽湰涓娿€傛兂鎯抽兘楹荤儲銆傜浉姣斾箣涓嬶紝鍏堝湪灏忛粦鏉夸笂璁颁笅鏉ユ瘮杈冩柟渚裤€傛兂涓€鎯筹紝璇讳功浜哄鏋滄病鏈夊皬榛戞澘鐨勫府鍔╋紝姣忔璁拌处閮借缈讳竴缈昏处鏈€傛晥鐜囧矀涓嶆槸浣庡緱鏃犳硶蹇嶅彈锛熻繕鏈夋椂闂撮櫔灏忛儹锛熸兂瑕佹棤涓庝鸡姣旓紵鍚屾牱锛岃繖涓棶棰樺湪MySQL涓篃瀛樺湪銆傚鏋滄瘡娆℃洿鏂版搷浣滈兘闇€瑕佸啓鍏ョ鐩橈紝鐒跺悗纾佺洏蹇呴』鎵惧埌瀵瑰簲鐨勮褰曪紝鐒跺悗鏇存柊锛屾暣涓繃绋嬬殑IO鎴愭湰鍜屾煡鎵炬垚鏈兘闈炲父楂樸€備负浜嗚В鍐宠繖涓棶棰橈紝MySQL鐨勮璁¤€呴噰鐢ㄤ簡绫讳技绉€鎵嶉泦灏忛粦鏉跨殑鎬濊矾鏉ユ彁楂樻洿鏂版晥鐜囥€傚皬榛戞澘鍜岃处鏈浉浜掗厤鍚堢殑杩囩▼鍏跺疄灏辨槸MySQL涓粡甯告彁鍒扮殑WAL鎶€鏈€傞噰璁胯€咃細骞磋交浜猴紝浣犵殑鎬濈淮鏂瑰紡寰堝鎬紒鐒跺悗璇︾粏鐨勫憡璇夋垜锛屼粈涔堟槸WAL鎶€鏈紵鐔婄尗锛氾紙灏忛┈鍝ュ鎴戞湁鎰忔€濓紒锛塛AL鐨勫叏绉版槸Write-AheadLogging銆傚畠鐨勯噸鐐规槸鍏堝啓鏃ュ織锛屽啀鍐欑鐩橈紝涔熷氨鏄厛鍐欏皬榛戞澘锛屼笉蹇欑殑鏃跺€欏啀鍐欒处鏈€傚叿浣撴潵璇达紝褰撴湁鏇存柊璇彞瑕佹墽琛屾椂锛孖nnoDB寮曟搸浼氬厛灏嗚褰曞啓鍏edolog锛堝皬榛戞澘锛夛紝鏇存柊鍐呭瓨銆傝嚦姝わ紝鏇存柊瀹屾垚銆傚悓鏃讹紝InnoDB寮曟搸浼氬湪閫傚綋鐨勬椂鍊欏皢杩欎釜鎿嶄綔璁板綍鏇存柊鍒扮鐩樹腑锛岃€岃繖涓洿鏂板線寰€鏄湪绯荤粺姣旇緝绌洪棽鐨勬椂鍊欒繘琛岀殑锛屽氨鍍忎竴涓鑰呭湪鍏抽棴涔嬪悗鎵€鍋氱殑閭f牱銆傚鏋滀粖澶╃殑淇$敤璐︽埛涓嶅锛屾帉鏌滃彲浠ュ湪鎵撶儕鍚庡畨鎺掋€備絾鏄鏋滄煇涓€澶╃殑瀛﹀垎澶锛屽皬榛戞澘鍐欐弧浜嗘€庝箞鍔烇紵杩欐椂锛岀鎵嶅彧濂借鏃犲弻甯繖澶勭悊鑷繁鐨勫伐浣滐紝骞惰繀閫熷皢灏忛粦鏉夸笂鐨勪竴浜涗俊鐢ㄨ褰曟洿鏂板埌璐︽湰涓婏紝鐒跺悗灏嗚繖浜涜褰曚粠灏忛粦鏉夸笂鎶瑰幓锛岃吘鍑虹┖闂磋鏂拌处.鍚屾牱锛孖nnoDB鐨勯噸鍋氭棩蹇椾篃鏈夊浐瀹氱殑澶у皬銆備緥濡傦紝瀹冨彲浠ラ厤缃负涓€缁?涓枃浠讹紝姣忎釜鏂囦欢鐨勫ぇ灏忎负100MB銆傞偅涔堣繖鍧椻€滃皬榛戞澘鈥濅竴鍏卞彲浠ヨ褰?00MB鐨勬搷浣滆褰曘€備粠澶村紑濮嬪啓锛岀劧鍚庡洖鍒板紑澶村湪缁撳熬寰幆鍐欙紝濡備笅鍥俱€傚啓鍏ヤ綅缃槸褰撳墠璁板綍鐨勪綅缃€傝竟鍐欒竟鍚戝悗绉诲姩锛屽啓鍒?鍙锋枃浠舵湯灏惧悗鍥炲埌0鍙锋枃浠跺紑澶淬€俢heckpoint涓哄綋鍓嶈鎿﹂櫎鐨勪綅缃紝鍚屾牱鍚戝悗寰幆绉诲姩銆傚湪鎿﹂櫎璁板綍涔嬪墠锛屽繀椤诲皢璁板綍鏇存柊鍒版暟鎹枃浠朵腑銆傚啓浣嶇疆鍜屾鏌ョ偣涔嬮棿鏄€滃皬榛戞澘鈥濈殑绌哄嚭閮ㄥ垎锛屽彲浠ョ敤鏉ヨ褰曟柊鐨勬搷浣溿€傚鏋渨ritepos杩戒笂浜哻heckpoint锛岃鏄庘€滃皬榛戞澘鈥濇弧浜嗭紝姝ゆ椂涓嶈兘杩涜鏂扮殑鏇存柊锛岄渶瑕佸厛鍋滀笅鏉ユ摝闄や竴浜涜褰曪紝鍐嶆帹杩沜heckpoint銆傛湁浜唕edolog锛孖nnoDB鍙互淇濊瘉鍗充娇鏁版嵁搴撳紓甯搁噸鍚紝涔嬪墠鎻愪氦鐨勮褰曚篃涓嶄細涓㈠け銆傝繖绉嶈兘鍔涚О涓虹鎾炲畨鍏ㄣ€俢rash-safe锛氬彲浠ュ拰鍓嶉潰淇$敤璁板綍鐨勪緥瀛愬姣斾竴涓嬨€傚彧瑕佹妸淇$敤璁板綍璁板湪灏忛粦鏉夸笂锛屾垨鑰呰鍦ㄨ处鏈笂锛屽嵆浣夸功鐢熺獊鐒惰鑰侀偄甯﹁蛋鍑犲ぉ锛屼篃鑳介€氳繃璐︽湰鍜屽皬璐︽湰涓婄殑鏁版嵁锛屾悶娓呬俊鐢ㄨ处鐩€傚洖鏉ュ悗鐨勯粦鏉裤€傚氨鏄淮鎶ゆ暟鎹寔涔呭寲銆俢rash-safe鏈川涓婂氨鏄鐩樺鐞嗭紝鏁版嵁淇濆瓨鍦ㄧ鐩樹笂锛屾柇鐢甸噸鍚篃涓嶄細涓㈠け銆傞潰璇曞畼锛氭槸鐨勶紝琚綘鐨勭悊瑙e悡浜嗕竴璺筹紝浣嗘槸鐢ㄨ瘝涓嶇矖锛屾妸redolog鐨勫師鐞嗚鐨勫緢鍒颁綅銆傜劧鍚庤璇翠綘瀵筨inlog鏃ュ織鐨勭悊瑙c€傜唺鐚細鍢匡紝璋㈣阿椹粡鐞嗙殑澶稿銆侻ySQL鍏跺疄鍒嗕负涓ら儴鍒嗭細鏈嶅姟鍣ㄥ眰鍜屽紩鎿庡眰銆係erver灞傦細涓昏鍋歁ySQL鍔熻兘灞傞潰鐨勪簨鎯咃紱寮曟搸灞傦細璐熻矗瀛樺偍鐩稿叧鐨勫叿浣撲簨鍔°€備笂闈㈡垜浠鐨勨€滃皬榛戞澘鈥漴edolog鏄疘nnoDB寮曟搸鐙湁鐨勬棩蹇楋紝server灞備篃鏈夎嚜宸辩殑鏃ュ織锛屽彨鍋歜inlog锛坅rchivedlog锛夛紝鍏跺疄灏辨槸鐢ㄦ潵鎭㈠鏁版嵁鐨勩€傞潰璇曞畼锛氶偅涓轰粈涔圡ySQL浼氭湁redolog鍜宐inlog涓ょ鏃ュ織鍛紵鐣欎笅涓€涓笉鏄緢濂藉悧锛熺唺鐚細鍥犱负涓€寮€濮婱ySQL閲岄潰娌℃湁InnoDB寮曟搸銆侻ySQL鐨勫唴缃紩鎿庢槸MyISAM锛屼絾鏄疢yISAM娌℃湁crash-safe鑳藉姏锛宐inlog鏃ュ織鍙槸鐢ㄦ潵褰掓。鐨勩€侷nnoDB鏄彟涓€瀹跺皢MySQL浣滀负鎻掍欢寮曞叆鐨勫叕鍙搞€傛垜浠煡閬撳崟闈燽inlog鏄病鏈塩rash-safe鑳藉姏鐨勶紝鎵€浠nnoDB浣跨敤浜嗗彟涓€绉嶆棩蹇楃郴缁熲€斺€攔edolog鏉ュ疄鐜癱rash-safe鑳藉姏銆傞噰璁胯€咃細杩欎袱涓棩蹇楃殑涓昏鍖哄埆鏄粈涔堬紵鐔婄尗锛歟mmm...鏈夊嚑涓尯鍒細redolog鏄疘nnoDB寮曟搸鐗规湁鐨勶紱binlog鐢盡ySQL鏈嶅姟鍣ㄥ眰瀹炵幇锛屾墍鏈夊紩鎿庡叡浜€俁edolog鏄墿鐞嗘棩蹇楋紝璁板綍鐨勬槸鈥滃鏌愪釜鏁版嵁椤靛仛浜嗕粈涔堜慨鏀光€濓紱binlog鏄€昏緫鏃ュ織锛岃褰曚簡杩欐潯璇彞鐨勫師濮嬮€昏緫锛屾瘮濡傗€滅粰ID=1琛岀殑c瀛楁鍔?鈥濄€俽edolog鏄惊鐜啓鍏ョ殑锛岀┖闂翠細鐢ㄥ畬鍐嶉噸鍐欙紱鍙互闄勫姞浜岃繘鍒舵棩蹇椼€傗€滆拷鍔犲啓鍏モ€濇槸鎸嘼inlog鏂囦欢鍐欏叆鍒颁竴瀹氬ぇ灏忓悗锛屼細鍒囨崲鍒颁笅涓€涓紝涓嶄細瑕嗙洊涔嬪墠鐨勬棩蹇椼€傞潰璇曞畼锛氬ソ鐨勶紝鏍规嵁浣犱笂闈㈣鐨勶紝姣斿涓嬮潰鐨凷QL锛屼綘鍙互鎻忚堪涓€涓婱ySQL鏇存柊T鐨勫唴閮ㄦ墽琛岃繃绋媠etmoney=money+500whereusername='ChenHaha';鐔婄尗锛氾紙寮€濮嬶紝鍘熷鏁版嵁璁块棶锛夋墽琛岃€呴鍏堝鎵惧紩鎿庡苟鑾峰彇鐢ㄦ埛鍚?'ChenHaha'杩欎竴琛屻€傚鏋渦sername='Chenhaha'鎵€鍦ㄧ殑鏁版嵁椤靛凡缁忓湪鍐呭瓨涓紝鍒欑洿鎺ヨ繑鍥炵粰executor锛涘惁鍒欓渶瑕佸厛浠庣鐩樿鍏ュ唴瀛橈紝鍐嶈繑鍥炪€傦紙鏁版嵁淇敼锛夋墽琛屽櫒鑾峰彇寮曟搸缁欑殑琛屾暟鎹紝灏唌oney瀛楁鐨勫€煎姞500锛屾瘮濡備箣鍓嶆槸N锛岀幇鍦ㄦ槸N+500锛岃幏鍙栨柊鐨勪竴琛屾暟鎹紝骞剁劧鍚庤皟鐢ㄥ紩鎿庢帴鍙e啓鍏ユ柊鐨勮鏁版嵁銆傦紙鏁版嵁鎻愪氦锛夋彁浜ゆ搷浣滐紝鐢变簬瀛樺偍寮曟搸灞傚拰server灞備箣闂翠娇鐢ㄤ簡鍐呴儴XA锛堜繚璇佷袱涓簨鍔$殑涓€鑷存€э紝杩欓噷涓昏淇濊瘉redolog鍜宐inlog鐨勫師瀛愭€э級锛屾墍浠ユ彁浜ゆ槸鍒嗕负preparephase鍜宑ommitPhase锛屼篃灏辨槸鎴戜滑鎵€璇寸殑涓ら樁娈垫彁浜ゃ€?Writeredolog)寮曟搸灏嗚繖琛屾柊鏁版嵁鏇存柊鍒板唴瀛樹腑锛屽悓鏃跺皢鏇存柊鎿嶄綔璁板綍鍒皉edolog涓紙鍐欏叆鍐呭瓨鎴栫洿鎺ュ啓鍏ョ鐩橈級锛岃繖閲岋紝redolog鏄浜庡噯澶囩姸鎬併€傦紙鍐檅inlog锛夌劧鍚庨€氱煡executor鎵ц瀹屾垚锛屽彲浠ラ殢鏃舵彁浜や簨鍔°€俥xecutor鐢熸垚鏈鎿嶄綔鐨刡inlog锛屽苟灏哹inlog鍚屾鍒扮鐩樸€傦紙鏁版嵁鏇存柊鍒扮鐩樻垨鍐呭瓨锛岀粨鏉燂級鎵ц鑰呰皟鐢ㄥ紩鎿庣殑committransaction鎺ュ彛杩涜淇敼鎿嶄綔銆傚畠闇€瑕佸皢瀵逛簩绾х储寮曟墍鍋氱殑淇敼鍐欏叆changebufferpage锛岀瓑鍒颁笅娆″叾浠朣QL闇€瑕佽鍙栦簩绾х储寮曟椂锛屽啀涓庝簩绾х储寮曞悎骞躲€傚紩鎿庢爣璁版柊鍐欏叆鐨剅edolog锛坈ommit锛夌姸鎬侊紝鍏跺疄灏辨槸澧炲姞浜嗕竴涓搴攂inlog鐨刋ID锛岃涓や釜log鐨勯€昏緫淇濇寔涓€鑷淬€傝嚦姝わ紝鏇存柊杩囩▼缁撴潫銆傞潰璇曞畼锛氶偅涓轰粈涔堟彁浜や竴瀹氳鍒嗕负prepare鍜宑ommit鍛紵涓€璧锋彁浜ょ粰浠栧ソ鍚楋紵鐔婄尗锛氫妇涓幇瀹炵敓娲讳腑鐨勬牀瀛愩€傛垜瑙夊緱涓€涓畬鏁寸殑浜ゆ槗娴佺▼搴旇鏄繖鏍风殑锛氭瘮濡備綘鏉ユ垜瀹跺皬瓒呭競涔颁竴鐡跺彲涔愶細椹摜锛氳€佹澘锛岀粰鎴戜竴鐡跺彲涔愶紒蹇冨噳鐨勪汉锛屽績椋炴壃鐨勪汉銆傛垜锛氾紵锛熸満鍣ㄦ壂鎻忓彲涔愶紝鍛婅瘔灏忛┈杩欑摱鍙箰2鍏?鍏冿紝涓嶈兘鐧藉珫銆傝浠栫粰閽憋紙璁板綍redolog锛屼簨鍔″浜巔repare鐘舵€侊級鏀堕挶鏀惧叆閽辩锛堣褰昩inlog锛屾牴鎹姸鎬佸垽鏂簨鍔℃槸鍚︾湡姝e畬鎴愶紝鏄湪commit闃舵琚爣璁帮級鐒跺悗璁╀綘鎷胯蛋鍙箰锛堥噸鍋氭棩蹇楃姸鎬佽鏍囪涓篶ommit锛岃〃绀轰簨鍔¢€昏緫鍏抽棴锛夈€傚埌杈捐繖閲屾剰鍛崇潃涓€娆′氦鏄撶殑缁撴潫銆傚苟涓斿憡璇夊皬椹摜锛岄偅涓張閰峰張鏆栧績鐨勬槸闆ⅶ锛屼綘涓偦X~鐒跺悗鎶婂綋澶╅攢鍞殑浜ゆ槗淇℃伅鍚屾鍒版暟鎹簱锛屽啀缁撶畻銆傚彲浠ョ湅鍑猴紝濡傛灉鍦ㄦ敹閽变箣鍓嶄腑鏂氦鏄擄紙鍑嗗闃舵锛岀3姝ワ級锛屽洖澶村鐞嗕氦鏄擄紝鍙戠幇鍙褰曚簡灏忛粦鏉匡紝娌℃湁鏀堕挶锛屽垯浜ゆ槗澶辫触锛屽皬榛戞澘涓婄殑璁板綍灏嗚鍒犻櫎锛坆acktoroll锛夛紱濡傛灉鏀舵鍚庝氦鏄撲腑鏂紙commit闃舵鎴栧緟commit闃舵锛宻tep4||5锛夛紝鍐嶅洖澶寸湅鍙戠幇绯荤粺鏈夎褰曪紙prepare锛夛紝閽辩鏈塼hisincome(binlog)锛岃〃绀烘湰娆′氦鏄撴湁鏁堬紝琛ュ厖淇敼commit鐘舵€侊紝鏇存柊鍒癷nventory涓€備互涓婃槸浜鸿瘽锛屾垜浠潵鐪嬬湅MySQL灞傞潰鐨勪笓涓氳В閲婏細杩欓噷鐢ㄥ弽璇佺殑鏂瑰紡鏉ヨВ閲婁负浠€涔堣杩涜涓ら樁娈垫彁浜ゃ€傜敱浜巖edolog鍜宐inlog鏄袱涓嫭绔嬬殑閫昏緫锛屽鏋滀笉浣跨敤two-phasecommit锛岃涔堝厛鍐檙edolog鍐嶅啓binlog锛岃涔堥『搴忛鍊掋€傝鎴戜滑鐪嬬湅杩欎袱绉嶆柟娉曟湁浠€涔堥棶棰樸€傝繕鏄互涔嬪墠鐨勬洿鏂拌鍙ヤ负渚嬨€傚亣璁惧綋鍓島sername='ChenHaha'琛岋紝璐︽埛浣欓瀛楁money鐨勫€间负100锛屽啀鍋囪鍦ㄦ墽琛寀pdate璇彞鐨勮繃绋嬩腑锛岀涓€鏉℃棩蹇楀啓鍏ュ悗锛岀浜屾潯鏃ュ織杩樻病鏈夊啓鍏ュ苟涓斿彂鐢熷穿婧冿紙寮傚父鍋滄満锛夛紝浼氬彂鐢熶粈涔堬紵杩樻槸浠ヨ繖鏉QL涓轰緥锛歶pdateTsetmoney=0+500whereusername='ChenHaha';1銆佸厛鍐檙edolog锛屽啀鍐檅inlog銆傚亣璁惧綋redolog鍐欏畬锛宐inlog杩樻病鏈夊啓瀹岋紝MySQL杩涚▼寮傚父閲嶅惎銆傚墠闈㈣杩囷紝redolog鍐欏畬鍚庯紝鍗充娇绯荤粺crash浜嗭紝鏁版嵁杩樻槸鍙互鎭㈠鐨勶紝鎵€浠ユ仮澶嶅悗杩欎竴琛宮oney鐨勫€间负money+500銆備絾鏄紝鍥犱负binlog杩樻病鍐欏畬灏眂rash浜嗭紝姝ゆ椂binlog涓苟娌℃湁璁板綍杩欐潯璇彞銆傛墍浠ュ悗闈㈠浠芥棩蹇楃殑鏃跺€欙紝淇濆瓨鐨刡inlog涓槸涓嶅瓨鍦ㄨ繖鏉¤鍙ョ殑銆傜劧鍚庝綘浼氬彂鐜板鏋滈渶瑕佺敤杩欎釜binlog鏉ユ仮澶嶄复鏃跺簱锛屽洜涓鸿繖鏉¤鍙ョ殑binlog涓㈠け浜嗭紝鎵€浠ヨ繖娆′复鏃跺簱鏇存柊鐨勬瘮杈冨皯锛屾仮澶嶇殑閭hmoney鐨勫€间负0锛岃繖涓庡師搴撶殑鍊间笉鍚屻€備笉鍚岀殑銆?銆佸厛鍐檅inlog锛屽啀鍐檙edolog銆傚鏋渃rash鍙戠敓鍦╞inlog鍐欏叆鍚庯紝鐢变簬redolog杩樻病鏈夊啓鍏ワ紝crashrecovery鍚庝簨鍔℃棤鏁堬紝鐢ㄦ埛浣欓money鐨勫€煎簲璇ヤ负0銆備絾鏄痓inlog宸茬粡璁板綍浜唋ogof銆嬫妸money浠?鏀规垚500锛屾墍浠ュ悗闈㈢敤binlog鎭㈠鐨勬椂鍊欙紝浼氬鍑轰竴涓簨鍔★紝鎭㈠鍑烘潵鐨刲inemoney鐨勫€兼槸500锛屽拰鍘熸潵鏁版嵁搴撶殑鍊间笉涓€鏍枫€傚畠鍙互鐪嬪埌锛屽鏋滀笉浣跨敤鈥滀袱闃舵鎻愪氦鈥濓紝鏁版嵁搴撶殑鐘舵€佸彲鑳藉拰鐢ㄥ畠鐨勬棩蹇楁仮澶嶇殑搴撶殑鐘舵€佷笉涓€鑷达紝绠€鍗曠殑璇达紝redolog鍜宐inlog閮藉彲浠ョ敤鏉ヨ〃绀篶ommit涓€涓簨鍔$姸鎬佺殑锛岃€屼袱闃舵鎻愪氦鏄负浜嗚涓や釜鐘舵€佸湪閫昏緫涓婁繚鎸佷竴鑷淬€傛棩蹇楁斁鍦ㄧ鐩樹笂锛屼繚璇佷簨鍔℃垚鍔燂紝鏃ュ織蹇呴』鏀惧湪纾佺洏涓娿€傝繖鏍凤紝涔嬪悗鏁版嵁搴撳穿婧冿紝鏌愮瑪浜ゆ槗鐨勬暟鎹笉浼氫涪澶便€俰nnodb_flush_log_at_trx_commit鐨勫弬鏁拌缃负1鏃讹紝琛ㄧず鐩存帴灏嗘瘡绗斾簨鍔$殑redolog鎸佷箙鍖栧埌纾佺洏銆傝繖鏍峰彲浠ヤ繚璇丮ySQL寮傚父閲嶅惎鍚庢暟鎹笉浼氫涪澶便€傚綋sync_binlog鍙傛暟璁剧疆涓?鏃讹紝琛ㄧず灏嗘瘡绗斾氦鏄撶殑binlog鎸佷箙鍖栧埌纾佺洏銆傝繖鏍峰彲浠ヤ繚璇丮ySQL寮傚父閲嶅惎鍚巄inlog涓嶄涪澶便€傞潰璇曞畼锛氾紙鑰佽劯涓€绾級闈㈣瘯瀹橈細灏忔潕锛屽潶鐧借锛屾垜浠庝簨鎶€鏈殑鏃堕棿涓嶉暱锛屼絾鎴戣寰椾綘寰堟噦杩欐柟闈紝涓轰粈涔堬紵鍥犱负浣犺鎴戞槒鏄忔鐫°€?鎴戝緢浣╂湇浣犲惞...璁叉晠浜嬬殑鑳藉姏锛屼綘锛屼綘鏄庣櫧鎴戠殑鎰忔€濄€傞潰璇曞畼锛氬皬鏉庯紝绛夋垜涓€浼氬効銆傦紙椹粡鐞嗘彁鐫€瑁ゅ瓙璧板嚭鍔炲叕瀹わ級鐔婄尗锛氾紙灏垮翱浜嗗悧锛燂紵涓嶄細鍚э紝鎴戠殑鎵嬫湳杩樹笉濂藉悧锛熼毦閬撴垜琚湅绌夸簡锛燂紵-_-''|)浜斿垎閽熷悗HR鏉ヤ簡銆?HR锛氬皬鏉庯紝鎴戝氨璇翠綘琛岋紒锛侀瀵煎緢鐪嬪ソ浣狅紝璇翠綘琛ㄨ揪鎯虫硶鐨勬柟寮忓緢鐙壒锛屽緢閫傚悎杩欎釜宀椾綅锛岀粰浣犵偣浜嗕釜璧烇紝閫氱煡浣犱笅鍛ㄥ叆鑱屻€侾anda锛氬ソ鐨勶紝鐪嬫潵寮€鍙戦渶瑕佸緢澶х殑琛ㄨ揪鑳藉姏~~HR锛氾紵锛熷摜涓嶆槸搴旇仒鑰呯殑浜у搧鍚楋紵鐔婄尗锛氿煒€馃榾馃檭馃檭浣犲湪璺熸垜浠璇濆悧锛熸垜搴旇仒鐨勮蒋浠跺紑鍙戝伐绋嬪笀鍝ワ紵HR锛氾紙鍡紝濂藉儚闈㈣瘯鐢佃瘽鎵撻敊浜嗭紝娣″畾锛屽皬闂锛塇R锛氬ソ鐨勶紝浠婂ぉ灏辫繖鏍峰惂锛屽洖鍘荤瓑閫氱煡鍚р樅鈽烘湁浠€涔堥棶棰樿闂垜鍚楋紵鐔婄尗锛氥€?...缁间笂鎵€杩帮紝浠婂ぉ鎴戜滑瀛︿範浜哅ySQL涓渶閲嶈鐨勪袱涓棩蹇楋紝鍗崇墿鐞嗘棩蹇梤edolog鍜岄€昏緫鏃ュ織binlog銆傚彟澶栵紝MySQL绯诲垪闈㈣瘯棰樺拰绛旀閮芥暣鐞嗗ソ浜嗐€傚井淇℃悳绱ava鎶€鏈爤锛屽悗鍙板彂閫侊細闈㈣瘯锛岀綉涓婂彲浠ョ湅銆傞拡瀵硅搴у唴瀹规€荤粨浜嗗嚑涓棶棰樸€傚涔犵殑鏃跺€欏彲浠ュ厛灏濊瘯鍥炵瓟杩欎簺闂鏉ユ楠岃嚜宸辩殑鎺屾彙绋嬪害銆俽edolog鏄粈涔堟蹇碉紵瀹冧负浠€涔堝瓨鍦紵WAL锛坵rite-aheadlog锛夋満鍒舵槸浠€涔堬紝瀹冩湁浠€涔堝ソ澶勶紵涓轰粈涔坮edolog鍙互淇濊瘉crashsafe鏈哄埗鍛紵binlog鍜宺edolog鏈変粈涔堝尯鍒紵鐗╃悊涓€鑷存€у拰閫昏緫涓€鑷存€у簲璇ュ浣曠悊瑙o紵鎵цupdate璇彞鏃秂xecutor鍜宨nnoDB鐨勬祦绋嬫槸鎬庢牱鐨勶紵濡傛灉鏁版嵁搴撹璇搷浣滐紝濡備綍杩涜鏁版嵁鎭㈠锛熶粈涔堟槸涓ら樁娈垫彁浜わ紝涓轰粈涔堥渶瑕佷袱闃舵鎻愪氦锛屼袱闃舵鎻愪氦鏄浣曚繚璇佹暟鎹簱涓袱涓棩蹇椾箣闂寸殑閫昏緫涓€鑷存€э紙浠€涔堟槸閫昏緫涓€鑷存€э級锛熷鏋滀笉鏄袱闃舵鎻愪氦锛屽厛鍐檙edolog锛屽厛鍐檅inlog锛屾瘡绉嶆儏鍐典細鍑虹幇浠€涔堥棶棰橈紵