最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫事務(wù)隔離級(jí)別介紹(Transaction Isolation Level)

 更新時(shí)間:2014年05月01日 23:46:06   作者:  
這篇文章主要介紹了MySQL數(shù)據(jù)庫事務(wù)隔離級(jí)別(Transaction Isolation Level) ,需要的朋友可以參考下

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

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

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

復(fù)制代碼 代碼如下:

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

這里全局默認(rèn)是REPEATABLE-READ,其實(shí)MySQL本來默認(rèn)也是這個(gè)級(jí)別

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

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

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

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

復(fù)制代碼 代碼如下:

start transaction;
select * from user where userId = 1 for update;

執(zhí)行完這句以后

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

復(fù)制代碼 代碼如下:

  select * from user;

   將會(huì)被掛起,因?yàn)镾ERIALIZABLE的select語句需要獲取共享鎖

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

復(fù)制代碼 代碼如下:

select * from user where userId = 1 for update;
update user set userAge = 100 where userId = 1;

也會(huì)被掛起,因?yàn)閒or update會(huì)獲取這一行數(shù)據(jù)的排它鎖,需要等到前一個(gè)事務(wù)釋放該排它鎖才可以繼續(xù)進(jìn)行

鎖的范圍:

行鎖: 對(duì)某行記錄加上鎖
表鎖: 對(duì)整個(gè)表加上鎖

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

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

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

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

   

  2)B更新一條記錄

   

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

   

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

   

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

   

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

   

  7)B表重新開始事務(wù)后,對(duì)user表記錄進(jìn)行修改,修改被掛起,直至超時(shí),但是對(duì)另一條數(shù)據(jù)的修改成功,說明A的修改對(duì)user表的數(shù)據(jù)行加行共享鎖(因?yàn)榭梢允褂胹elect)

   

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

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

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

   

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

   

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

   

  4)B提交事務(wù)

   

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

   

  6)A對(duì)user表進(jìn)行修改

   

  7)B重新開始事務(wù),并對(duì)user表同一條進(jìn)行修改,發(fā)現(xiàn)修改被掛起,直到超時(shí),但對(duì)另一條記錄修改,卻是成功,說明A的修改對(duì)user表加上了行共享鎖(因?yàn)榭梢詓elect)

   

   

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

3. REPEATABLE-READ(可重讀)

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

   

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

   

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

   

  4)B提交事務(wù)

   

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

   

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

   

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

   

   

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

   

   

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

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

4.SERIERLIZED(可串行化)

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

   

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

   

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

   

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

相關(guān)文章

  • RHEL7.5下mysql 8.0.11安裝教程

    RHEL7.5下mysql 8.0.11安裝教程

    這篇文章主要為大家詳細(xì)介紹了RHEL7.5下mysql 8.0.11安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • MySQL-tpch 測試工具簡要手冊(cè)

    MySQL-tpch 測試工具簡要手冊(cè)

    tpch是TPC(Transaction Processing Performance Council)組織提供的工具包。用于進(jìn)行OLAP測試,以評(píng)估商業(yè)分析中決策支持系統(tǒng)(DSS)的性能。它包含了一整套面向商業(yè)的ad-hoc查詢和并發(fā)數(shù)據(jù)修改,強(qiáng)調(diào)測試的是數(shù)據(jù)庫、平臺(tái)和I/O性能,關(guān)注查詢能力
    2016-05-05
  • 數(shù)據(jù)庫性能測試之sysbench工具的安裝與用法詳解

    數(shù)據(jù)庫性能測試之sysbench工具的安裝與用法詳解

    sysbench是一個(gè)很不錯(cuò)的數(shù)據(jù)庫性能測試工具,這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫性能測試之sysbench工具的安裝與用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • MySQL數(shù)據(jù)庫常用操作技巧總結(jié)

    MySQL數(shù)據(jù)庫常用操作技巧總結(jié)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫常用操作技巧,結(jié)合實(shí)例形式總結(jié)分析了mysql查詢、存儲(chǔ)過程、字符串截取、時(shí)間、排序等常用操作技巧,需要的朋友可以參考下
    2018-03-03
  • MySQL?Online?DDL原理解析

    MySQL?Online?DDL原理解析

    MySQL原生OnlineDDL通過允許在表可用的情況下執(zhí)行DDL操作,大大提升了數(shù)據(jù)庫的可用性,通過不同的執(zhí)行算法,如COPY、INPLACE和INSTANT,它支持在線修改數(shù)據(jù)庫結(jié)構(gòu),優(yōu)化了數(shù)據(jù)庫維護(hù)流程,本文給大家介紹MySQL?Online?DDL原理,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • win10下mysql 5.7.23 winx64安裝配置方法圖文教程

    win10下mysql 5.7.23 winx64安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了win10下mysql 5.7.23 winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 經(jīng)典mysql連接查詢例題

    經(jīng)典mysql連接查詢例題

    本文通過一個(gè)有趣的例子向我們介紹了mysql連接查詢,采用了子查詢和連接查詢混合和多次連接查詢,需要的朋友可以參考下
    2015-07-07
  • MySQL存儲(chǔ)過程的權(quán)限問題小結(jié)

    MySQL存儲(chǔ)過程的權(quán)限問題小結(jié)

    這篇文章主要介紹了MySQL存儲(chǔ)過程的權(quán)限問題小結(jié)及mysql 創(chuàng)建存儲(chǔ)過程權(quán)限問題,感興趣的朋友一起看看吧
    2018-04-04
  • 阿里云服務(wù)器新建用戶具體方法

    阿里云服務(wù)器新建用戶具體方法

    本文包括了新建服務(wù)器用戶和新建MySQL用戶的方法,有需要的朋友可以參考一下
    2013-09-09
  • mysql mysqldump數(shù)據(jù)備份和增量備份

    mysql mysqldump數(shù)據(jù)備份和增量備份

    本篇文章主要講如何使用shell實(shí)現(xiàn)mysql全量,增量備份,還可以按時(shí)間備份。
    2013-10-10

最新評(píng)論

拉萨市| 桐梓县| 天门市| 双牌县| 海城市| 盱眙县| 虞城县| 荃湾区| 莎车县| 宁德市| 安图县| 临江市| 八宿县| 丰都县| 凌云县| 怀远县| 固阳县| 石泉县| 始兴县| 丹东市| 遵化市| 汕头市| 尚志市| 石家庄市| 保德县| 宣汉县| 肥西县| 玉环县| 三江| 屏山县| 桦川县| 三河市| 郸城县| 莆田市| 岑溪市| 吉木乃县| 苏州市| 黄冈市| 滨海县| 广昌县| 郁南县|