国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

面試突擊:說(shuō)一下MySQL事務(wù)隔離級(jí)別?

數(shù)據(jù)庫(kù) MySQL
MySQL 中有 4 種事務(wù)隔離級(jí)別:讀未提交(存在臟讀/不可重復(fù)讀/幻讀問(wèn)題)、讀已提交(存在不可重復(fù)讀/幻讀問(wèn)題)、可重復(fù)讀(存在幻讀問(wèn)題)和序列化,其中可重復(fù)讀是 MySQL 默認(rèn)的事務(wù)隔離級(jí)別。

作者 | 磊哥

來(lái)源 | Java面試真題解析(ID:aimianshi666)

轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán)(微信ID:GG_Stone)

MySQL 事務(wù)隔離級(jí)別是為了解決并發(fā)事務(wù)互相干擾的問(wèn)題的,MySQL 事務(wù)隔離級(jí)別總共有以下 4 種:

  1. READ UNCOMMITTED:讀未提交。
  2. READ COMMITTED:讀已提交。
  3. REPEATABLE READ:可重復(fù)讀。
  4. SERIALIZABLE:序列化。

一、四種事務(wù)隔離級(jí)別

1、READ UNCOMMITTED

讀未提交,也叫未提交讀,該隔離級(jí)別的事務(wù)可以看到其他事務(wù)中未提交的數(shù)據(jù)。該隔離級(jí)別因?yàn)榭梢宰x取到其他事務(wù)中未提交的數(shù)據(jù),而未提交的數(shù)據(jù)可能會(huì)發(fā)生回滾,因此我們把該級(jí)別讀取到的數(shù)據(jù)稱之為臟數(shù)據(jù),把這個(gè)問(wèn)題稱之為臟讀。

2、READ COMMITTED

讀已提交,也叫提交讀,該隔離級(jí)別的事務(wù)能讀取到已經(jīng)提交事務(wù)的數(shù)據(jù),因此它不會(huì)有臟讀問(wèn)題。但由于在事務(wù)的執(zhí)行中可以讀取到其他事務(wù)提交的結(jié)果,所以在不同時(shí)間的相同 SQL 查詢中,可能會(huì)得到不同的結(jié)果,這種現(xiàn)象叫做不可重復(fù)讀。

3、REPEATABLE READ

可重復(fù)讀,MySQL 默認(rèn)的事務(wù)隔離級(jí)別??芍貜?fù)讀可以解決“不可重復(fù)讀”的問(wèn)題,但還存在幻讀的問(wèn)題。所謂的幻讀指的是,在同一事務(wù)的不同時(shí)間使用相同 SQL 查詢時(shí),會(huì)產(chǎn)生不同的結(jié)果。例如,一個(gè) SELECT 被執(zhí)行了兩次,但是第二次返回了第一次沒(méi)有返回的一行,那么這一行就是一個(gè)“幻像”行。

注意:幻讀和不可重復(fù)讀的側(cè)重點(diǎn)是不同的,不可重復(fù)讀側(cè)重于數(shù)據(jù)修改,兩次讀取到的同一行數(shù)據(jù)不一樣;而幻讀側(cè)重于添加或刪除,兩次查詢返回的數(shù)據(jù)行數(shù)不同。

4、SERIALIZABLE

序列化,事務(wù)最高隔離級(jí)別,它會(huì)強(qiáng)制事務(wù)排序,使之不會(huì)發(fā)生沖突,從而解決了臟讀、不可重復(fù)讀和幻讀問(wèn)題,但因?yàn)閳?zhí)行效率低,所以真正使用的場(chǎng)景并不多。

5、小結(jié)

簡(jiǎn)單總結(jié)一下,MySQL 中的事務(wù)隔離級(jí)別就是為了解決臟讀、不可重復(fù)讀和幻讀等問(wèn)題的,這 4 種隔離級(jí)別與這 3 個(gè)問(wèn)題之間的對(duì)應(yīng)關(guān)系如下:

事務(wù)隔離級(jí)別

臟讀

不可重復(fù)讀

幻讀

讀未提交(READ UNCOMMITTED)

讀已提交(READ COMMITTED)

×

可重復(fù)讀(REPEATABLE READ)

×

×

串行化(SERIALIZABLE)

×

×

×

二、并發(fā)事務(wù)中的問(wèn)題

并發(fā)事務(wù)中存在以下 3 個(gè)問(wèn)題。

1、臟讀

一個(gè)事務(wù)讀取到了另一個(gè)事務(wù)為提交保存的數(shù)據(jù),之后此事務(wù)進(jìn)行了回滾操作,從而導(dǎo)致第一個(gè)事務(wù)讀取了一個(gè)不存在的臟數(shù)據(jù)。

2、不可重復(fù)讀

在同一個(gè)事務(wù)中,同一個(gè)查詢?cè)诓煌臅r(shí)間得到了不同的結(jié)果。例如事務(wù)在 T1 讀取到了某一行數(shù)據(jù),在 T2 時(shí)間重新讀取這一行時(shí)候,這一行的數(shù)據(jù)已經(jīng)發(fā)生修改,所以再次讀取時(shí)得到了一個(gè)和 T1 查詢時(shí)不同的結(jié)果。

3、幻讀

MySQL 對(duì)幻讀的定義如下:

The so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times.  For example, if a SELECT is executed twice, but returns a row the second time that was not returned the first time, the row is a “phantom” row.

官方文檔:https://dev.mysql.com/doc/refman/5.7/en/innodb-next-key-locking.html翻譯為中文是:同一個(gè)查詢?cè)诓煌瑫r(shí)間得到了不同的結(jié)果,這就是事務(wù)中的幻讀問(wèn)題。例如,一個(gè) SELECT 被執(zhí)行了兩次,但是第二次返回了第一次沒(méi)有返回的一行,那么這一行就是一個(gè)“幻像”行。

三、隔離級(jí)別實(shí)戰(zhàn)

1、查詢事務(wù)隔離級(jí)別

查看全局 MySQL 事務(wù)隔離級(jí)別和當(dāng)前會(huì)話的事務(wù)隔離級(jí)別的 SQL 如下:

select @@global.tx_isolation,@@tx_isolation;

以上 SQL 執(zhí)行結(jié)果如下圖所示:

圖片

2、設(shè)置事務(wù)隔離級(jí)別

每個(gè)連接到 MySQL 的客戶端可以單獨(dú)設(shè)置事務(wù)的隔離級(jí)別,MySQL 可以使用以下 SQL 設(shè)置當(dāng)前連接(客戶端)的事務(wù)隔離級(jí)別:

set session transaction isolation level 事務(wù)隔離級(jí)別;

其中事務(wù)隔離級(jí)別有 4 個(gè)值:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE

3、臟讀問(wèn)題

一個(gè)事務(wù)讀取到了另一個(gè)事務(wù)為提交保存的數(shù)據(jù),之后此事務(wù)進(jìn)行了回滾操作,從而導(dǎo)致第一個(gè)事務(wù)讀取了一個(gè)不存在的臟數(shù)據(jù)。接下來(lái),我們使用 SQL 來(lái)演示一下臟讀問(wèn)題。

正式開(kāi)始之前,先創(chuàng)建一個(gè)測(cè)試表:

-- 創(chuàng)建一個(gè)城市表
drop table if exists city;
create table city(
id int primary key auto_increment,
name varchar(250) not null
);

臟讀的執(zhí)行順序如下:

圖片

臟讀的執(zhí)行 SQL 和執(zhí)行順序如下:

  1. 客戶端 A:set session transaction isolation level read uncommitted。
  2. 客戶端 A:start transaction。
  3. 客戶端 B:start transaction。
  4. 客戶端 B:insert into city(name) values('西安')。
  5. 客戶端 A:select * from city。
  6. 客戶端 B:rollback。
  7. 客戶端 A:select * from city。

對(duì)應(yīng)的執(zhí)行結(jié)果如下圖所示:

圖片

? 圖片 ?從上述結(jié)果可以看出,當(dāng)把客戶端 A 設(shè)置為讀未提交的事務(wù)隔離級(jí)別后,客戶端 A 可以讀取到其他事務(wù)未提交的數(shù)據(jù),當(dāng)其他事務(wù)回滾之后,客戶端 A 讀取的數(shù)據(jù)就成了臟數(shù)據(jù),這就是臟讀,也就是讀未提交的事務(wù)隔離級(jí)別中存在臟讀的問(wèn)題。

4、不可重復(fù)讀問(wèn)題

在同一個(gè)事務(wù)中,同一個(gè)查詢?cè)诓煌臅r(shí)間得到了不同的結(jié)果。例如事務(wù)在 T1 讀取到了某一行數(shù)據(jù),在 T2 時(shí)間重新讀取這一行時(shí)候,這一行的數(shù)據(jù)已經(jīng)發(fā)生修改,所以再次讀取時(shí)得到了一個(gè)和 T1 查詢時(shí)不同的結(jié)果。

不可重復(fù)讀的執(zhí)行順序如下:圖片

圖片

不可重復(fù)讀的執(zhí)行 SQL 和執(zhí)行順序如下:

  1. 客戶端 A:set session transaction isolation level read committed。
  2. 客戶端 A:start transaction。
  3. 客戶端 A:select * from city where id=1。
  4. 客戶端 B:start transaction。
  5. 客戶端 B:update city set name='長(zhǎng)安' where id=1。
  6. 客戶端 B:commit。
  7. 客戶端 A:select * from city where id=1。

對(duì)應(yīng)執(zhí)行的結(jié)果如下圖所示:

圖片

從上述結(jié)果中可以看出,客戶端 A 被設(shè)置了讀已提交的事務(wù)隔離級(jí)別之后,使用同樣的 SQL 兩次讀取到的同一條數(shù)據(jù),內(nèi)容是不一樣的,這就是不可重復(fù)讀。也就是讀已提交的事務(wù)隔離級(jí)別中,可能存在不可重復(fù)讀的問(wèn)題

5、幻讀問(wèn)題

同一個(gè)查詢?cè)诓煌瑫r(shí)間得到了不同的結(jié)果,這就是事務(wù)中的幻讀問(wèn)題。例如,一個(gè) SELECT 被執(zhí)行了兩次,但是第二次返回了第一次沒(méi)有返回的一行,那么這一行就是一個(gè)“幻像”行。

幻讀的執(zhí)行順序如下:

圖片

幻讀的執(zhí)行 SQL 和執(zhí)行順序如下:客戶端 A:set session transaction isolation level repeatable read; 客戶端 A:start transaction; 客戶端 A:select * from city where id<5; --查詢出1條數(shù)據(jù) 客戶端 B:start transaction; 客戶端 B:insert into city(id,name) values(2,'北京'); 客戶端 B:commit; 客戶端 A:update city set name='京城' where id=2; 客戶端 A:select * from city where id<5; --查詢出2條數(shù)據(jù) 對(duì)應(yīng)執(zhí)行的結(jié)果如下圖所示:

圖片

圖片 從上述結(jié)果可以看出,客戶端 A 被設(shè)置了可重復(fù)讀的事務(wù)隔離級(jí)別之后,使用相同的 SQL 卻查詢出了一樣的結(jié)果,第一次查詢出了一條數(shù)據(jù),而第二次查詢出了兩條數(shù)據(jù),多出來(lái)的這行數(shù)據(jù)就叫做“幻像”行,因此我們可以得出結(jié)果,在可重復(fù)讀中可能會(huì)存在幻讀的問(wèn)題。

總結(jié)

MySQL 中有 4 種事務(wù)隔離級(jí)別:讀未提交(存在臟讀/不可重復(fù)讀/幻讀問(wèn)題)、讀已提交(存在不可重復(fù)讀/幻讀問(wèn)題)、可重復(fù)讀(存在幻讀問(wèn)題)和序列化,其中可重復(fù)讀是 MySQL 默認(rèn)的事務(wù)隔離級(jí)別。臟讀是讀到了其他事務(wù)未提交的數(shù)據(jù),不可重復(fù)讀是讀到了其他事務(wù)修改的數(shù)據(jù),而幻讀則是讀取到了其他事務(wù)新增或刪除的“幻像”行數(shù)據(jù)。

責(zé)任編輯:姜華 來(lái)源: Java面試真題解析
相關(guān)推薦

2023-02-02 07:06:10

2022-09-27 21:14:54

Spring事務(wù)傳播機(jī)制

2022-09-19 06:16:23

事務(wù)隔離級(jí)別Spring

2022-10-09 20:52:19

事務(wù)隔離級(jí)別傳播機(jī)制

2022-09-05 07:06:59

BeanSpring

2022-01-13 06:59:40

HashMap底層面試

2022-05-18 07:43:09

Exchange交換器JUC

2018-12-19 16:46:38

MySQL事務(wù)隔離數(shù)據(jù)庫(kù)

2022-03-09 07:35:24

線程池線程參數(shù)

2022-02-17 08:02:08

線程Java生命周期

2022-07-20 07:29:55

TCPIP協(xié)議

2021-01-18 11:49:26

面試事務(wù)隔離

2021-10-19 10:10:51

MySQL事務(wù)隔離級(jí)別數(shù)據(jù)庫(kù)

2021-08-04 13:19:42

MySQL 事務(wù)隔離

2021-07-26 10:28:13

MySQL事務(wù)隔離

2024-04-26 09:17:20

MySQL事務(wù)隔離

2020-03-05 09:33:15

數(shù)據(jù)庫(kù)事務(wù)隔離事務(wù)

2024-12-02 08:37:04

2017-08-09 14:34:12

MysqlJavaPython

2023-09-12 14:56:13

MyBatis緩存機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

成人线上视频| 中文在线一二区| 超碰在线97免费| 写真福利理论片在线播放| 中文字幕资源网在线观看| 性欧美gay| 99视频精品全国免费| 国产精品88久久久久久| 国产精品中文有码| 午夜欧美在线一二页| 亚洲欧美自拍一区| 日本成人免费在线| 亚洲日本欧美在线| 独立日3在线观看完整版| 天天影视久久综合| 91精品导航| 日本少妇一区二区| 亚洲天堂中文字幕| 亚洲第一中文字幕| 成人在线中文字幕| 黑人糟蹋人妻hd中文字幕| 成人看av片| 天天做综合网| 久久九九99视频| 欧美不卡一区二区三区四区| 神马影院午夜我不卡| 亚洲色图久久久| 欧美日韩在线精品一区二区三区激情综合 | 欧美成人在线影院| 开心色怡人综合网站| 在线影视一区| 台湾佬综合网| 久久精品亚洲精品国产欧美kt∨| 日韩欧美国产一区在线观看| 国产精品视频网站| 国产真实伦在线观看| 国产欧美自拍一区| 久久丝袜美腿综合| 少妇激情综合网| www.日本在线播放| 亚洲电影观看| 国产麻豆午夜三级精品| 精品亚洲国产成av人片传媒| 人偷久久久久久久偷女厕| 国产激情小视频在线| 99日韩精品| 91精品国产综合久久精品麻豆| 91深夜福利视频| 嫩草研究院在线| 99精品国产在热久久婷婷| 欧美高清性hdvideosex| 欧美一区二区三区四区五区六区| 欧洲日本在线| 日一区二区三区| 亚洲欧美在线第一页| 欧美视频免费看欧美视频| a一区二区三区亚洲| 国产精品久久久久影视| 日韩av电影手机在线| 99久热re在线精彩视频| 国产综合精品一区| 日韩一区二区三区视频| 国产精品无码乱伦| 国产一区91| 日韩欧美一区二区三区| 欧美性视频网站| 二区三区在线播放| 久久av一区二区三区| 欧美日韩不卡视频| 91午夜在线观看| 国产suv精品一区| 欧美日韩国产一区二区| 欧美一级爽aaaaa大片| 成人免费观看49www在线观看| 亚洲日本丝袜连裤袜办公室| 91香蕉视频黄| 国产精品久久久久福利| 色开心亚洲综合| 成人高清视频免费观看| 秋霞成人午夜鲁丝一区二区三区| 黄色国产在线| 91丨国产丨九色丨pron| 9a蜜桃久久久久久免费| 欧美成人ⅴideosxxxxx| 亚洲精品你懂的| 亚洲精品国产精品久久 | 伊人久久大香线蕉综合四虎小说 | 欧美激情综合色综合啪啪五月| 你懂的在线视频| 99r国产精品| 鲁丝一区二区三区免费| 全球av集中精品导航福利| 精品国产91亚洲一区二区三区婷婷| www日韩在线观看| 欧美亚洲自偷自偷| 国产精品xxx视频| 成人免费在线观看视频| 欧美性猛交xxxx黑人交| 尤蜜粉嫩av国产一区二区三区| 久久电影一区| 日本免费久久高清视频| 国产欧美日韩91| 大胆人体色综合| 杨幂毛片午夜性生毛片| 成人av二区| 色先锋久久av资源部| 日本不卡久久| 三级在线看中文字幕完整版| 国产成人综合自拍| 久久99久久亚洲国产| 亚洲pron| 99热在线成人| 国产亚洲视频在线观看| 粉嫩av一区二区| 亚洲精品欧美日韩专区| 国产不卡高清在线观看视频| 中文字幕4区| 日韩视频123| 好紧好硬好湿我太爽了| 亚洲精华一区二区三区| 懂色aⅴ精品一区二区三区蜜月| 国产私拍一区| 91亚洲精品| 亚洲色图制服诱惑| 国产美女精品免费电影| 成人在线免费看片| 午夜精品福利一区二区三区av| 人妻熟妇乱又伦精品视频| 欧美h版在线| 欧美美女网站色| 国产深夜男女无套内射| 91精品99| 伦伦影院午夜日韩欧美限制| 九色视频在线播放| 成人欧美一区二区三区在线播放| 国产精品男人的天堂| 日韩一区二区三区在线免费观看| 欧美日韩精品在线| 欧美xxxbbb| 欧美另类videos死尸| 冲田杏梨av在线| 国产欧美高清| 国产精品一区二区三区在线播放 | 亚洲国产精品成人| 99国产超薄肉色丝袜交足的后果 | 国产精品久久99| 成人拍拍拍在线观看| 亚洲欧美韩国综合色| 嫩模私拍啪啪| 婷婷开心激情综合| 天堂а在线中文在线无限看推荐| 欧美日韩一区精品| 亚洲少妇视频| 久久成人精品电影| 久久99成人| 久久久久久亚洲精品中文字幕| 亚洲精品一区| 久久国产精品久久久| 国产亚洲精品美女久久久久久久久久| 成人欧美一区二区三区在线湿哒哒| 影音先锋日韩精品| 一本色道久久综合亚洲精品婷婷| 一区二区自拍| 先锋影音男人资源| 国产精品嫩草99a| 成人免费一区二区三区视频网站| 欧美日韩一级视频| 国模精品视频| 欧美日韩三级在线| 视频国产在线观看| 日韩av最新在线观看| 国内揄拍国内精品久久| 99爱视频在线观看| 播播国产欧美激情| 狠狠网亚洲精品| 黄色免费网站在线观看| 国产在线精品一区免费香蕉| 国产精品久久久久久久久果冻传媒| 欧美成人免费电影| 少妇精品久久久久久久久久| 日本精品一区二区三区高清 | 国产卡一卡二在线| 欧美精品丝袜久久久中文字幕| 欧美gvvideo网站| 超碰在线公开超碰在线| 秋霞av国产精品一区| 国产精品精品国产色婷婷| 国产激情综合| 国产美女三级视频| 久热精品视频在线观看一区| 成人福利视频在线| 亚洲香蕉久久| 国产v亚洲v天堂无码久久久| 久久精品99久久久久久久久| 高清不卡一二三区| 精品国产一区二区三区性色av| 久久精品午夜福利| 久久久免费观看视频| 亚洲精品午夜av福利久久蜜桃| 日韩av毛片网|