mysql浜嬪姟闅旂绾у埆/鑴忚/涓嶅彲閲嶅璇?骞昏璇﹁В

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql浜嬪姟闅旂绾у埆/鑴忚/涓嶅彲閲嶅璇?骞昏璇﹁В相关的知识,希望对你有一定的参考价值。

鏍囩锛?a href='http://www.mamicode.com/so/1/mys' title='mys'>mys   澶氭   娌℃湁   鍙樻洿   鍏跺畠   ble   mysq   璁茶В   cti   

涓€銆佸洓绉嶄簨鍔¢殧绂荤骇鍒?/span>

1.1 read uncommitted 璇绘湭鎻愪氦

鍗筹細浜嬪姟A鍙互璇诲彇鍒颁簨鍔宸?span style="color: #0000ff;">淇敼浣嗘湭鎻愪氦鐨勬暟鎹€?/p>

闄ら潪鏄枃绔犻槄璇婚噺锛屾瘡娆?1杩欑鏃犲叧鐥涚棐鐨勫満鏅紝涓€鑸笟鍔$郴缁熸病鏈変汉浼氫娇鐢ㄨ浜嬪姟闅旂绾у埆锛屾爣鍑嗗疄鍦ㄥお瀹芥澗浜嗐€?/p>

 

1.2 read committed 璇诲凡鎻愪氦(绠€绉癛C)

鍗筹細浜嬪姟A鍙兘璇诲彇鍒颁簨鍔淇敼骞跺凡鎻愪氦鐨勬暟鎹€?/p>

杩欎釜绾у埆鐩稿瑕佷弗鏍间竴浜涳紝鑷冲皯鏄绛夊叾瀹冧簨鍔℃妸鍙樻洿鎻愪氦鍒癲b锛屾墠鑳借鍙栧埌锛屽惉涓婂幓铔潬璋辩殑銆備絾鏄湁浜涗笟鍔″満鏅紝姣斿浼氬憳绯荤粺涓紝濡傛灉瑕佸湪涓€涓簨鍔′腑锛屽娆¤鍙栫敤鎴疯韩浠斤紝鍒ゆ柇鏄惁浼氬憳锛屽鏋滃垰寮€濮嬭鍙栧埌璇ョ敤鎴锋槸浼氬憳锛屽仛浜嗕竴浜涢€昏緫澶勭悊锛屽悗闈㈠張璇诲埌鐢ㄦ埛涓嶆槸浼氬憳浜嗭紝杩欏氨鏈夌偣宕╂簝锛屼笉鐭ラ亾濡備綍缁х画銆傝繖绉嶅笇鏈涘悓1涓簨鍔′腑锛屽叧閿暟鎹笉绠¤鍙栧娆℃锛岀粨鏋滈兘涓€鏍凤紝RC绾у埆灏变笉琛屼簡銆?/p>


1.3 repeatable read 鍙噸澶嶈

鍗筹細鍚屼竴涓簨鍔′腑锛屽娆¤鍙栨煇涓€琛岃褰曪紝濮嬬粓鏄竴鏍风殑鍊硷紝涓嶇鍦ㄦ鏈熼棿锛屽叾瀹冧簨鍔℃湁娌℃湁淇敼杩囪鏁版嵁(涓嶈鏄惁鎻愪氦)銆傝绾у埆瑙e喅浜哛C涓嶅彲閲嶅璇荤殑闂锛屼絾鏄瓨鍦ㄥ够璇婚棶棰橈紙骞昏鍚庨潰浼氳瑙o級銆?/p>

 

1.4 serializable 涓茶鍖?/p>

鍗筹細涓€涓簨鍔″湪淇敼鍏跺畠鏁版嵁鏃讹紝濡傛灉鏈夊叾瀹冧簨鍔′篃鎯虫敼锛屽繀椤荤瓑鍓嶉潰鐨勪簨鍔℃彁浜ゆ垨鍥炴粴鍚庯紝鎵嶈兘缁х画銆傛渶涓ユ牸鐨勭骇鍒紝浣嗘槸鎬ц兘鏈€浣庯紝涔熷嚑涔庢病浜虹敤銆?/p>

 

浜屻€佽剰璇?涓嶅彲閲嶅璇?骞昏
2.1 鑴忚

鎶€鏈浘鐗? src=

 

楠岃瘉锛?/p>

a. 鎵句竴涓猰ysql鐜锛屽缓涓€涓祴璇曡〃t_people锛屽氨2鍒?id 锛宯ame

b. 寮€浜屼釜mysql缁堢锛岃繛鍒癲b涓婏紝涓烘柟渚胯瑙o紝杩?涓粓绔О涓?ldquo;缁堢1”銆?ldquo;缁堢2”锛岀粓绔?閲岃緭鍏ワ細

set session transaction isolation level read uncommitted;
start transaction;

鍗筹細璁剧疆褰撳墠浼氳瘽鐨勯殧绂荤骇鍒负"璇绘湭鎻愪氦"銆?/p>

鎶€鏈浘鐗? src=

缁堢2閲岋紝杈撳叆:

start transaction;
update t_people set name=鈥榵xx鈥?where id=1;

鎶€鏈浘鐗? src=

鐒跺悗鍐嶅洖鍒?ldquo;缁堢1”锛屾墽琛?nbsp;

select id,name from t_people where id=1;

鎶€鏈浘鐗? src=

鍙互鐪嬪埌锛岃鍙栧埌浜嗘湭鎻愪氦鐨勮剰鏁版嵁 銆?nbsp;缁堢2閲岋紝姝ゆ椂濡傛灉鎵цrollback鍥炴粴 

鎶€鏈浘鐗? src=

缁堢1閲岋紝缁х画鎵ц

select id,name from t_people where id=1;

鎶€鏈浘鐗? src=

鍙互鍙戠幇鏈€鏂扮粨鏋滐紝宸茬粡鏄洖婊氬悗鐨勬暟鎹€傚緢鏄剧劧锛氬鏋滄湁鑴忚闂鍑虹幇锛屽氨鏇村姞淇濊瘉涓嶄簡“鍙噸澶嶈”銆?/p>

 

2.2 涓嶅彲閲嶅璇?/p>

鎶€鏈浘鐗? src=

 

灏嗕簨鍔¢殧绂荤骇鍒缃垚read committed锛堝嵆锛氳宸叉彁浜わ級锛屽彲瑙e喅鑴忚闂锛屼絾婊¤冻涓嶄簡“鍙噸澶嶈闇€姹?rdquo;銆?/p>

楠岃瘉鏂规硶璺熷垰鎵嶇被浼硷紝缁堢1閲岃緭鍏ワ細

set session transaction isolation level read committed;

灏嗙骇鍒缃垚RC锛岀劧鍚?涓粓绔噷閮藉紑鍚簨鍔★紝缁堢2涓紝淇敼涓€琛屾暟鎹紝浣嗘槸涓嶆彁浜わ紝姝ゆ椂缁堢1閲屽簲璇ユ槸璇讳笉鍒扮粓绔?淇敼鐨勬暟鎹€傜劧鍚庣粓绔?鎻愪氦锛岀粓绔?鎵嶈兘璇诲埌淇敼鍚庣殑鏁版嵁銆傜粓绔?濡傛灉缁х画淇敼銆佹彁浜わ紝缁堢1閲屽啀璇诲彇杩?琛岋紝灏嗘槸鏈€鏂扮殑鍊笺€傦紙涔熷氨鏄彧璇达紝鍙缁堢2涓嶆柇淇敼锛屼笉鏂彁浜わ紝缁堢1閲屽氨鑳借鍒拌繖琛屼笉鍚岀殑鏂板€硷紝鍗筹細淇濊瘉涓嶄簡鍚?涓簨鍔′腑锛屽悓涓€琛屾暟鎹紝澶氭閲嶅璇诲彇鐨勫€间笉鍙橈級

 

2.3 骞昏

灏嗛殧绂荤骇鍒户缁皟鏁磋嚦Repeatable Read锛岃繕鏄垰鎵嶇殑鍦烘櫙锛屽彉鎴愯繖鏍凤細

鎶€鏈浘鐗? src=

 

浜嬪姟A瀵逛簬鍚屼竴琛屾暟鎹紝涓嶇璇诲灏戞锛屽缁堟槸鐩稿悓鐨勫€硷紝瀹屽叏涓嶇悊浼氭湁娌℃湁鍏跺畠浜嬪姟鍦ㄤ慨鏀瑰畠銆傛湁鐐癸細“涓よ€充笉闂荤獥澶栦簨锛屼竴蹇冨彧璇诲湥璐や功”鐨勫懗閬撱€備絾鏄繖涔熸湁闂锛屾瘮濡傜鏉€璁㈠崟绯荤粺涓紝浜嬪姟A绗?娆¤鍙栧晢鍝佸簱瀛橈紝鍙戠幇杩樻湁1涓紝鍙互涓嬪崟锛岃刀绱х户缁紝浣嗘槸姝ゆ椂锛屽彲鑳芥湁鍙︿竴涓簨鍔★紝涔熷湪涓嬪崟锛屽凡缁忔彁浜や簡璁㈠崟锛屾妸搴撳瓨鍑忎负0浜嗭紝浜嬪姟A骞朵笉鐭ラ亾锛屽洜涓哄娆¤鍙栧簱瀛樼殑鍊兼槸涓€鏍风殑锛岃繕鏄?锛屾渶鍚庝粛鐒舵妸璁㈠崟鍒涘缓浜嗭紝褰㈡垚瓒呭崠銆?/p>

楠岃瘉鏂规硶锛?/p>

set session transaction isolation level repeatable read;

鍓╀笅鐨勬楠よ窡鍓嶉潰绫讳技锛屽氨涓嶉噸澶嶈禈杩颁簡銆傘€€

 

2.4 涓茶鍖?/p>

浠巇b灞傞潰锛岃鎯冲悓鏃惰В鍐宠剰璇汇€佷笉鍙噸澶嶈銆佸够璇伙紝鍙湁涓茶鍖栬繖涓骇鍒彲浠ュ仛鍒般€?/p>

set session transaction isolation level serializable;

濡備笅鍥撅細缁堢1璁剧疆涓茶鍖栧悗锛岀揣鎺ョ潃select xxx where id=1杩欐潯璇彞鍚庯紝id=1鐨勮繖琛岃褰曪紝灏辫閿佷簡銆?/p>

鎶€鏈浘鐗? src=

鍦ㄧ粓绔?閲岋紝鏇存柊鍏跺畠璁板綍锛堝嵆锛歩d涓嶇瓑浜?锛夊彲浠ユ甯告垚鍔燂紝浣嗘槸鏇存柊id=1 鏃讹紝灏变細鍗′綇锛岄櫎闈炵粓绔?鎶婁簨鍔℃彁浜ゆ垨鍥炴粴锛屽惁鍒欏皢涓€鐩村崱鐫€锛岀洿鍒拌秴鏃跺け璐ャ€?/p>

鎶€鏈浘鐗? src=

 

灏忕粨锛?/p>

闅旂绾у埆銆€銆€ 瀛樺湪鐨勯棶棰?/td>
璇绘湭鎻愪氦銆€銆€銆€ 鑴忚銆佷笉鍙噸澶嶈銆佸够璇?/td>
璇诲凡鎻愪氦銆€銆€ 涓嶅彲閲嶅璇汇€佸够璇?/td>
鍙噸澶嶈 骞昏
涓茶鍖?/td> 鎬ц兘闂

闅旂绾у埆瓒婁弗鏍硷紝db缁煎悎鎬ц兘瓒婁綆銆?/p>

 

寤鸿锛?/span>

澶у鏁版儏鍐典笅锛孯C(璇诲凡鎻愪氦)鍩烘湰涓婂氨瓒冲浜嗭紝濡傛灉骞跺彂搴﹂珮锛屽彲浠ヨ€冭檻“RC绾у埆+(搴旂敤灞?鍒嗗竷寮忛攣”锛岃繖鏍峰嵆鑳戒繚璇佹暟鎹纭紝瀵筪b鐨勬€ц兘鍘嬪姏涔熻緝浣庛€?/p>

以上是关于mysql浜嬪姟闅旂绾у埆/鑴忚/涓嶅彲閲嶅璇?骞昏璇﹁В的主要内容,如果未能解决你的问题,请参考以下文章

浜嬪姟闅旂

mysql姝婚攣com.mysql.cj.jdbc.exception.MYSQLTransactionRollbackException Deadlock found when trying to

Spring闈㈣瘯鑰冪偣

Mysql 浜嬪姟

閭d簺鍓嶇寮€鍙戝繀涓嶅彲灏戠殑鐢熶骇鍔涘伐鍏?/a>