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

生产中的数据库死锁是程序员的牺牲

时间:2023-04-02 09:28:09 Java

澶у濂斤紝鎴戞槸Skow鍦ㄧ湅杩欑瘒鏂囩珷涔嬪墠锛屼綘鍙互闂棶鑷繁浠€涔堟槸姝婚攣锛烳ysql鏈夊摢浜涢攣锛烳ysql閿佹ā寮忓吋瀹圭煩闃典綘鐭ラ亾鍚楋紵濡備綍瑙e喅姝婚攣闂锛熷鏋滀綘鑳介棴鐫€鐪肩潧鍥炵瓟杩欎簺闂锛岄偅涔堣榛橀粯鐐硅禐绂诲紑馃憤馃徎濡傛灉浣犲浠ヤ笂鐭ヨ瘑鐐硅繕鏈変簺妯$硦锛岄偅涔堟湰鏂囧皢甯︿綘浠庝竴涓湡瀹炵殑涓氬姟鍦烘櫙鍑哄彂锛屽垎鏋愭閿侀棶棰橈紝甯屾湜杩欑瘒鏂囩珷瀵逛綘鏈夊府鍔╋紝Let'sgo馃え涓氬姟鑳屾櫙鐩墠鎴戜滑鍏徃鏈変袱涓郴缁燂紝绯荤粺A鍜岀郴缁烞銆傜郴缁烝瀛樺偍浜嗗叕鍙告墍鏈変汉鍛樼殑淇℃伅銆傜郴缁烞闇€瑕佸湪涓€澶╃粨鏉熸椂瀹氭湡浠庣郴缁烝鍚屾鏁版嵁浜哄憳锛屽鏋滅郴缁烞涓凡缁忓瓨鍦紝鍒欐洿鏂帮紝濡傛灉涓嶅瓨鍦紝鍒欐彃鍏ャ€傜敱浜庝汉鍛樹俊鎭繃澶氾紝閲囩敤澶氱嚎绋嬬殑鏂瑰紡鍚屾浜哄憳鏁版嵁銆傞獙璇佷唬鐮佹椂锛岎煒℃祴璇曚汉鍛樻劋鎬掑弽搴旓紝sync\_user鏄垜浠悓姝ヤ汉鍛樼殑datasheet鎵撲笉寮€銆傚鏋滃彂鐢熶粈涔堜簨锛屼笉瑕佹儕鎱屻€傚厛鎬繍缁村惂銆傗€滃皬濮愶紝鍒媴蹇冦€備竴瀹氭槸鏁版嵁搴撶郴缁熸湁闂銆傗€濇垜浠唬鐮佺殑寮€鍙戦€犳垚浜嗚繖涓〃鐨勬閿侊紝瀵艰嚧琛ㄦ棤娉曟墦寮€銆備负浠€涔堜細鍑虹幇姝婚攣锛熸帴涓嬫潵锛岃鎴戜滑杩樺師妗堝彂鐜板満銆傛垜浠繕鍘熶竴涓嬪師鏉ョ殑寤鸿〃璇彞锛堝綋鐒舵垜浠笉浼氱粰浣犵湅鐪熷疄鐨勮〃锛塁REATETABLE`sync_user`(`user_id`VARCHAR(32)NOTNULLCOMMENT'userID',`user_name`VARCHAR(32)DEFAULTNULLCOMMENT'username',`login_account`VARCHAR(50)DEFAULTNULLCOMMENT'loginaccount',PRIMARYKEY(`user_id`),KEY`idx_login_account`(`login_account`)浣跨敤BREEENGINE=INNODBDEFAULTCHARSET=utf8mb4COMMENT='UserInformationTable';鐜板湪绯荤粺涓湁寮犱笁鍜屾潕鍥涗袱涓敤鎴疯〃鍑嗗濂戒簡锛屾垜浠湅鐪嬫垜浠殑鏁版嵁闅旂绾у埆锛屾妸鎴戜滑鐨勮嚜鍔ㄦ彁浜ゅ叧鎺夊ソ鎴忓紑濮嬶紒锛侊紒鉁嶏笍鎸夌収涓嬪浘鏉ユā鎷熸垜浠苟鍙戞暟鎹悓姝ョ殑鎯呭喌锛屽惎鍔ㄤ簨鍔?锛屾墽琛屾洿鏂拌鍙?UPDATEsync\_userSETuser\_name="寮犱笁2"wherelogin\_account="zhangsan";鎵撳紑浜嬪姟2锛屾墽琛屾洿鏂拌鍙?UPDATEsync\_userSETuser\_name="lisi2"wherelogin\_account="lisi";鏇存柊鎴愬姛杩斿洖浜嬪姟1锛屾墽琛宨nsert璇彞>INSERTINTOsync\_user(user\_id,user\_name,login\_account)VALUES('3','鐜嬩簲','wangwu');--杩欎釜璇彞琚樆濉烇紝杩斿洖浜嬪姟2锛屾墽琛屾彃鍏ヨ鍙?INSERTINTOsync\_user(user\_id,user\_name,login\_account)VALUES('4','yangliu','yangliu');--鍑虹幇姝婚攣锛屼笂闈簨鍔?鐨刬nsert璇彞鎵ц鎴愬姛灏辨槸鎴戜滑妯℃嫙鐨勫苟鍙戞儏鍐点€傜被浠h〃鎬荤粨鍥惧涓嬸煈囨閿佸垎鏋愰€氳繃灏濊瘯鑾峰彇閿佹椂鍙戠幇鐨勬閿侊紱灏濊瘯閲嶅惎浜嬪姟2鎻愮ず鐨勪簨鍔★紝鎴戜滑鍙互娓呮鍦板緱鍒板畠銆傝繖灏辨槸姝婚攣鎯呭喌銆傛閿佹€庝箞鍔烇紵澶у鑰佸笀鏄繖鏍峰憡璇夋垜浠殑锛氭閿佹槸鎸囧涓繘绋嬪湪杩愯杩囩▼涓簤鎶㈣祫婧愰€犳垚鐨勬閿併€傚悜鍓嶆帹杩涘鑷存閿佺殑鍥涗釜蹇呰鏉′欢浜掓枼锛氫竴绉嶈祫婧愪竴娆″彧鑳借涓€涓繘绋嬩娇鐢紱璇锋眰鍜屼繚鎸佹潯浠讹細褰撲竴涓繘绋嬭璇锋眰璧勬簮闃诲鏃讹紝淇濇寔鑾峰緱鐨勮祫婧愶紱涓嶅墺澶烘潯浠讹細杩涚▼鑾峰緱鐨勮祫婧愬湪鐢ㄥ畬涔嬪墠涓嶈兘寮鸿鍓ュず锛涘惊鐜瓑寰呮潯浠讹細澶氫釜杩涚▼褰㈡垚澶村熬寰幆绛夊緟璧勬簮鍏崇郴锛沷k锛屼粈涔堟槸姝婚攣锛屾槸浠€涔堝鑷存閿佺殑蹇呰鏉′欢鎴戜滑宸茬粡鐭ラ亾浜嗐€傝浜х敓姝婚攣锛屽繀椤诲厛鏈夐攣銆傞偅涔圡ysql鏈夊摢浜涢攣鍛紵Mysql鎸夐攣鏂瑰紡鍖哄垎锛氳褰曢攣銆侀棿闅欓攣銆乶ext-key閿併€佹彃鍏ユ剰鍚戦攣銆傝姹傜殑閿佹帴涓嬫潵姝e紡鍒嗘瀽涓€涓嬩簨鍔?鍜屼簨鍔?鍚勮嚜寰楀埌鐨勬槸浠€涔堥攣lisi,zhangsan),(zhangsan,+鈭?recordlock:鍥犱负login\_account鏄储寮曪紝鎵€浠ヤ細鍦▃hangsan琛屽姞涓€涓狽ext-Key閿侊細Next-Keylock=recordlock+gaplock锛屾墍浠PDATE璇彞鏈?lisi,zhangsan鐨凬ext-Key閿乚鎬荤粨锛氭洿鏂板紶涓夌殑璇彞鑾峰彇Next-Key閿?>(lisi,zhangsan]闂撮殭閿?>(zhangsan,+鈭?Transaction1isinsertingwangwuWangWu'sTime闂撮殭閿侊細鍥犱负wangwu锛坙isi鍜寊hangsan涔嬮棿锛夛紝闇€瑕佽姹傞棿闅欓攣锛坙isi锛寊hangsan锛夋彃鍏ユ剰鍥鹃攣锛圛nsertIntention锛夛細鎻掑叆鎰忓浘閿佹槸鍦ㄦ彃鍏ヤ竴琛岃褰曞墠璁剧疆鐨勯棿闅欓攣锛岃繖涓攣閲婃斁涓€绉嶆彃鍏ユā寮忕殑淇″彿锛屽嵆浜嬪姟A闇€瑕佹彃鍏ユ剰鍚戦攣(lisi,zhangsan)銆傚洜姝わ紝浜嬪姟1鐨刄PDATE璇彞鍜孖NSERT璇彞鎵ц瀹屽悗锛屾寔鏈?lisi,zhangsan)鐨勬槸Next-閿攣锛?zhangsan,+鈭?闂撮殭閿侊紝鎯冲緱鍒?lisi,zhangsan)鎻掑叆鎰忓悜鎺掍粬閿佷簨鍔?鐨勫垎鏋愪篃鍜屼笂闈㈢殑渚嬪瓙涓€鏍凤紝鎴戜滑鐩存帴缁欏嚭绛旀UPDATE璇彞鍜孖NSERT璇彞浜嬪姟2鎵ц瀹屾瘯锛屾寔鏈?-鈭?lisi)鐨凬ext-Key閿侊紝(lisi,zhangsan)鐨凣ap閿侊紝鎯宠幏鍙?lisi,zhangsan)鐨勬彃鍏ユ剰鍚戞帓浠栭攣宸茬粡鍒嗘瀽瀹屾瘯锛岀劧鍚庯紝鎴戜滑闇€瑕佹鏌ヤ簨鍔$殑鏃ュ織缁撴灉銆傜湡鐩稿嵆灏嗘诞鍑烘按闈€備簨鍔?鏈熸湜寰楀埌(lisi,zhangsan)鐨勬彃鍏ユ剰鍚戦攣锛屼絾鏄繖涓寖鍥寸洰鍓嶈浜嬪姟2鐨?lisi,zhangsan]鐨勯棿闅欓攣鍗犵敤锛岃繖涓や釜閿佷篃鏈夊啿绐侊紝浜嬪姟2鏈熸湜寰楀埌鐨勬槸(lisi,zhangsan)鐨勬彃鍏ユ剰鍚戦攣锛屼絾鏄繖涓寖鍥磋浜嬪姟1鐨?lisi,zhangsan]鐨凬ext-Key閿佸崰鐢ㄤ簡锛岃繖涓や釜閿佸張鍐茬獊浜嗭紝鎵€浠ユ閿佸彂鐢熶簡鍥犱负Innodb鐨勫簳灞傛満鍒讹紝瀹冧細璁╁叾涓竴涓簨鍔℃斁寮冭祫婧愶紝鑰屽彟涓€涓簨鍔′細鎵ц鎴愬姛锛岃繖灏辨槸涓轰粈涔堜綘鏈€鍚庣湅鍒颁簨鍔?鎻掑叆鎴愬姛锛屼絾鏄簨鍔?鎻掑叆鏄剧ず鍙戠幇姝婚攣銆傛€荤粨姝婚攣鐨勫師鍥犲凡缁忓垎鏋愬嚭鏉ヤ簡锛岄偅涔堜互鍚庨亣鍒版閿侊紝鏁翠綋鐨勮В鍐虫€濊矾鏄粈涔堬紵鍦ㄦ閿佽繍缁存ā鎷熷満鏅腑灞曠ずengineinnodb鐘舵€侊紱鏌ョ湅姝婚攣鏃ュ織鎵惧嚭姝婚攣SQLSQL閿佸垎鏋愶紝鍙互鍘诲畼缃戠湅鐪嬶紝鍒嗘瀽姝婚攣鏃ュ織锛堟寔鏈変粈涔堥攣锛岀瓑寰呬粈涔堥攣锛夌啛鎮夐攣妯″紡鍏煎鎬х煩闃碉紝鍏煎鎬х煩闃礗nnoDB瀛樺偍寮曟搸涓殑閿併€傚弬鑰冩枃绔狅細涓佸銆奙ySql 瀹炴垬45璁层€嬫崱铚楃墰鐨勫皬鐢峰銆婃墜鎶婃墜鏁欎綘鍒嗘瀽Mysql姝婚攣闂銆嬫枃鍒版缁撴潫馃濡傛灉鏈枃瀵规偍鏈夊府鍔╋紝璇风偣璧炲澶氬垎浜埌寰俊鍏紬鍙枫€恈odeLiveHouse銆戝叕浼楀彿鍥炲銆嬩俊鎭€濆彲浠ヨ幏寰楀ぇ鍘傞潰璇曢/鎶€鏈枃妗?鐢靛瓙涔︾瓑銆?/p>

最新推荐
猜你喜欢