色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

MySQL數據庫會自動加鎖

林子帆2年前47瀏覽0評論
MySQL數據庫會自動加鎖?

這個問題涉及到mysql的術語有臟讀,讀寫鎖,事務隔離級別,下面一一來解釋。

臟讀:事務一修改數據中的記錄時,事務還沒提交,這時候事務二正好讀取到了這條修改過的數據,然后事務一因為某些原因事務回滾,數據回到了原來的狀態,事務二讀到的數據就是臟數據,整個過程就是臟讀!

臟讀用大白話來說就是:干哈呀?明明數據庫中沒有這個數據,哪來的這玩意?

不可重復讀:事務一在一個事務中多次讀取同樣的數據,這時候另一個事務剛好在修改數據,導致事務一多次獲取到的數據不一致,這就是不可重復讀!不可重復讀通常出現在update中!

不可重復讀用大白話來說:怎么回事?我吃肉吃著吃著,誰給我整成大白菜了?

幻讀: 幻讀:事務一先根據條件獲取到M條數據,然后事務二又增加或減少了N條數據,導致事務一再次搜索的時候發現多了或者少了N條數據,也就是發生了幻讀。通常出現在insert或者delete中 !

幻讀用大白話來說就是:啥玩意?剛才是M,轉個頭就給我整成M±N了,勞資出現幻覺了?

下面來看看mysql中的鎖:

寫鎖(排它鎖):獲取到排它鎖的事務可以對數據進行任何操作,而且別的事務不能獲取到數據的任何其他鎖!

讀鎖(共享鎖):所有事務都可以公平的獲取到數據的共享鎖,進行數據的讀取!

事務隔離級別有以下幾種,讀未提交,讀已提交,可重復讀,串行化,分別會對鎖進行不同的控制,

以下的事務隔離級別解決錯誤數據的能力越來越高:

1,讀未提交(0)啥都解決不了(0);

2,讀已提交(1)能解決臟讀(1);

3,可重復讀(2)能解決臟讀(1)和不可重復讀(2);

4,串行化(3)啥都能解決(1,2,3);

如果mysql開啟的事務隔離級別是讀未提交,也就相當于沒有鎖,數據隨便讀,很容易就能讀到臟數據,容易出現臟讀的現象,生產環境肯定不能用這樣的事務隔離級別!

所以需要保證數據安全并兼容性能,就需要根據場景選擇不同的事務傳播級別,因為數據錯誤主要出現在臟讀,生產中大多數用的是讀已提交事務傳播級別!

最近正在持續的分享JAVA,數據庫相關的技術,力保通俗易懂,敬請關注。。。