mysql樂觀鎖解決并發(fā) mysql默認(rèn)鎖是悲觀還是樂觀?
mysql默認(rèn)鎖是悲觀還是樂觀?關(guān)閉命令是:設(shè)置autocommit=0,悲觀鎖可以在執(zhí)行中使用Select進(jìn)行更新,執(zhí)行時數(shù)據(jù)會被鎖定。雖然數(shù)據(jù)將被鎖定,但不會影響其他事務(wù)的正常查詢使用。這里通常使
mysql默認(rèn)鎖是悲觀還是樂觀?
關(guān)閉命令是:設(shè)置autocommit=0,悲觀鎖可以在執(zhí)行中使用Select進(jìn)行更新,執(zhí)行時數(shù)據(jù)會被鎖定。雖然數(shù)據(jù)將被鎖定,但不會影響其他事務(wù)的正常查詢使用。這里通常使用普通的查詢:select*from table語句。當(dāng)我們使用悲觀鎖時,事務(wù)中的語句如下://start transaction begin/begin work/start transaction(三取一)//query information select*from order where id=1 for update//modify information update order set name=“names”//submit transaction commit/commit work(三取一)。這里的查詢語句用于update關(guān)鍵字。在事務(wù)中,僅選擇。。。如果更新可用或鎖定在共享模式下,則相同的數(shù)據(jù)將等待其他事務(wù)完成后再執(zhí)行,而常規(guī)選擇查詢不受
~]的影響。這是兩個不同的概念。
1. 向表中添加版本是由您自己的程序或sqlwhere條件控制的,并不能真正到達(dá)MySQL的事務(wù)層。2悲觀鎖是MySQL本身維護(hù)的一種鎖機(jī)制。是否添加版本與悲觀鎖無關(guān),只與設(shè)置的事務(wù)級別有關(guān)
默認(rèn)情況下,更新時使用悲觀鎖,實(shí)際上是一個鎖。對于像for update這樣的高并發(fā)性,最好不要悲觀。這很可悲,很容易陷入僵局。