国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

MySQL數(shù)據(jù)庫事務(wù)隔離級別介紹(TransactionIsolationLevel)

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 21:03:05
文檔

MySQL數(shù)據(jù)庫事務(wù)隔離級別介紹(TransactionIsolationLevel)

MySQL數(shù)據(jù)庫事務(wù)隔離級別介紹(TransactionIsolationLevel):數(shù)據(jù)庫隔離級別有四種,應(yīng)用《高性能mysql》一書中的說明: 然后說說修改事務(wù)隔離級別的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 代碼如下: #可選參數(shù)有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, S
推薦度:
導(dǎo)讀MySQL數(shù)據(jù)庫事務(wù)隔離級別介紹(TransactionIsolationLevel):數(shù)據(jù)庫隔離級別有四種,應(yīng)用《高性能mysql》一書中的說明: 然后說說修改事務(wù)隔離級別的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 代碼如下: #可選參數(shù)有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, S

數(shù)據(jù)庫隔離級別有四種,應(yīng)用《高性能mysql》一書中的說明:

然后說說修改事務(wù)隔離級別的方法:

1.全局修改,修改mysql.ini配置文件,在最后加上

代碼如下:
 #可選參數(shù)有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.
 [mysqld]
 transaction-isolation = REPEATABLE-READ

這里全局默認是REPEATABLE-READ,其實MySQL本來默認也是這個級別

2.對當(dāng)前session修改,在登錄mysql客戶端后,執(zhí)行命令:

要記住mysql有一個autocommit參數(shù),默認是on,他的作用是每一條單獨的查詢都是一個事務(wù),并且自動開始,自動提交(執(zhí)行完以后就自動結(jié)束了,如果你要適用select for update,而不手動調(diào)用 start transaction,這個for update的行鎖機制等于沒用,因為行鎖在自動提交后就釋放了),所以事務(wù)隔離級別和鎖機制即使你不顯式調(diào)用start transaction,這種機制在單獨的一條查詢語句中也是適用的,分析鎖的運作的時候一定要注意這一點

再來說說鎖機制:
共享鎖:由讀表操作加上的鎖,加鎖后其他用戶只能獲取該表或行的共享鎖,不能獲取排它鎖,也就是說只能讀不能寫

排它鎖:由寫表操作加上的鎖,加鎖后其他用戶不能獲取該表或行的任何鎖,典型是mysql事務(wù)中

代碼如下:
start transaction;
select * from user where userId = 1 for update;

執(zhí)行完這句以后

  1)當(dāng)其他事務(wù)想要獲取共享鎖,比如事務(wù)隔離級別為SERIALIZABLE的事務(wù),執(zhí)行

代碼如下:
  select * from user;

   將會被掛起,因為SERIALIZABLE的select語句需要獲取共享鎖

  2)當(dāng)其他事務(wù)執(zhí)行

代碼如下:
select * from user where userId = 1 for update;
update user set userAge = 100 where userId = 1;

也會被掛起,因為for update會獲取這一行數(shù)據(jù)的排它鎖,需要等到前一個事務(wù)釋放該排它鎖才可以繼續(xù)進行

鎖的范圍:

行鎖: 對某行記錄加上鎖
表鎖: 對整個表加上鎖

這樣組合起來就有,行級共享鎖,表級共享鎖,行級排他鎖,表級排他鎖

下面來說說不同的事務(wù)隔離級別的實例效果,例子使用InnoDB,開啟兩個客戶端A,B,在A中修改事務(wù)隔離級別,在B中開啟事務(wù)并修改數(shù)據(jù),然后在A中的事務(wù)查看B的事務(wù)修改效果:

1.READ-UNCOMMITTED(讀取未提交內(nèi)容)級別

  1)A修改事務(wù)級別并開始事務(wù),對user表做一次查詢

   

  2)B更新一條記錄

   

  3)此時B事務(wù)還未提交,A在事務(wù)內(nèi)做一次查詢,發(fā)現(xiàn)查詢結(jié)果已經(jīng)改變

   

  4)B進行事務(wù)回滾

   

  5)A再做一次查詢,查詢結(jié)果又變回去了

   

  6)A表對user表數(shù)據(jù)進行修改

   

  7)B表重新開始事務(wù)后,對user表記錄進行修改,修改被掛起,直至超時,但是對另一條數(shù)據(jù)的修改成功,說明A的修改對user表的數(shù)據(jù)行加行共享鎖(因為可以使用select)

   

  可以看出READ-UNCOMMITTED隔離級別,當(dāng)兩個事務(wù)同時進行時,即使事務(wù)沒有提交,所做的修改也會對事務(wù)內(nèi)的查詢做出影響,這種級別顯然很不安全。但是在表對某行進行修改時,會對該行加上行共享鎖

2. READ-COMMITTED(讀取提交內(nèi)容)

  1)設(shè)置A的事務(wù)隔離級別,并進入事務(wù)做一次查詢

   

  2)B開始事務(wù),并對記錄進行修改

   

  3)A再對user表進行查詢,發(fā)現(xiàn)記錄沒有受到影響

   

  4)B提交事務(wù)

   

  5)A再對user表查詢,發(fā)現(xiàn)記錄被修改

   

  6)A對user表進行修改

   

  7)B重新開始事務(wù),并對user表同一條進行修改,發(fā)現(xiàn)修改被掛起,直到超時,但對另一條記錄修改,卻是成功,說明A的修改對user表加上了行共享鎖(因為可以select)

   

   

  READ-COMMITTED事務(wù)隔離級別,只有在事務(wù)提交后,才會對另一個事務(wù)產(chǎn)生影響,并且在對表進行修改時,會對表數(shù)據(jù)行加上行共享鎖

3. REPEATABLE-READ(可重讀)

  1)A設(shè)置事務(wù)隔離級別,進入事務(wù)后查詢一次

   

  2)B開始事務(wù),并對user表進行修改

   

  3)A查看user表數(shù)據(jù),數(shù)據(jù)未發(fā)生改變

   

  4)B提交事務(wù)

   

  5)A再進行一次查詢,結(jié)果還是沒有變化

   

  6)A提交事務(wù)后,再查看結(jié)果,結(jié)果已經(jīng)更新

   

  7)A重新開始事務(wù),并對user表進行修改

   

   

  8)B表重新開始事務(wù),并對user表進行修改,修改被掛起,直到超時,對另一條記錄修改卻成功,說明A對表進行修改時加了行共享鎖(可以select)

   

   

  REPEATABLE-READ事務(wù)隔離級別,當(dāng)兩個事務(wù)同時進行時,其中一個事務(wù)修改數(shù)據(jù)對另一個事務(wù)不會造成影響,即使修改的事務(wù)已經(jīng)提交也不會對另一個事務(wù)造成影響。

  在事務(wù)中對某條記錄修改,會對記錄加上行共享鎖,直到事務(wù)結(jié)束才會釋放。

4.SERIERLIZED(可串行化)

  1)修改A的事務(wù)隔離級別,并作一次查詢

   

  2)B對表進行查詢,正常得出結(jié)果,可知對user表的查詢是可以進行的

   

  3)B開始事務(wù),并對記錄做修改,因為A事務(wù)未提交,所以B的修改處于等待狀態(tài),等待A事務(wù)結(jié)束,最后超時,說明A在對user表做查詢操作后,對表加上了共享鎖

   

  SERIALIZABLE事務(wù)隔離級別最嚴(yán)厲,在進行查詢時就會對表或行加上共享鎖,其他事務(wù)對該表將只能進行讀操作,而不能進行寫操作。

您可能感興趣的文章:

  • MySQL鎖(表鎖,行鎖,共享鎖,排它鎖,間隙鎖)使用詳解
  • 深入理解Mysql的四種隔離級別
  • MySQL中Innodb的事務(wù)隔離級別和鎖的關(guān)系的講解教程
  • 淺析MYSQL REPEATABLE-READ隔離級別
  • MySQL 四種事務(wù)隔離級別詳解及對比
  • mysql+Spring數(shù)據(jù)庫隔離級別與性能分析
  • MySQL四種事務(wù)隔離級別詳解
  • mysql 詳解隔離級別操作過程(cmd)
  • MySQL數(shù)據(jù)庫事務(wù)隔離級別詳解
  • MySQL可重復(fù)讀級別能夠解決幻讀嗎
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL數(shù)據(jù)庫事務(wù)隔離級別介紹(TransactionIsolationLevel)

    MySQL數(shù)據(jù)庫事務(wù)隔離級別介紹(TransactionIsolationLevel):數(shù)據(jù)庫隔離級別有四種,應(yīng)用《高性能mysql》一書中的說明: 然后說說修改事務(wù)隔離級別的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 代碼如下: #可選參數(shù)有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, S
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 大黄毛片 | 国产成人精品视频一区二区不卡 | 国产拍拍拍免费视频网站 | 欧美高清视频在线 | 欧美久久久久久久一区二区三区 | 五十路在线播放 | 韩国精品一区 | 国产精品一区二区久久精品 | 精品国产91久久久久久久 | 久久国产精品久久久久久久久久 | 日韩在线免费视频 | 国产原创一区二区 | 欧美激情国产日韩精品一区18 | 国产免费一区二区三区 | 热久久91| 在线免费视频国产 | 在线国产视频观看 | 欧美成人精品一区二区三区 | 亚洲视频播放 | 欧美黄站 | 欧美日韩高清在线观看一区二区 | 成年全黄大色大黄 | 亚洲欧美在线综合 | 免费国产高清视频 | 最新国产在线视频 | 久久国产免费一区 | 亚洲美女网站 | 五十路中文字幕 | 在线 v亚洲 v欧美v 专区 | 国产一级在线 | 人人草人人澡 | 国内精品一区二区 | 国产网站在线免费观看 | 国产日韩欧美 | 亚洲最新在线观看 | 国产一区二区三区毛片 | 最新国产在线 | 精品一区二区三区18 | 亚洲国产精品视频 | 亚洲日本在线观看 | 欧美日韩精品免费一区二区三区 |