日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql堵塞等级_MySQL 事务隔离级别

發(fā)布時(shí)間:2024/7/5 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql堵塞等级_MySQL 事务隔离级别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

簡(jiǎn)單來說,數(shù)據(jù)庫事務(wù)就是保證一組數(shù)據(jù)操作要么全部成功,要么全部失敗。在 MySQL 中,事務(wù)是在引擎層實(shí)現(xiàn)的。原生的 MyISAM 引擎不支持事務(wù),也是為什么 InnoDB 會(huì)取代它的重要原因之一。

隔離性與隔離級(jí)別

當(dāng)數(shù)據(jù)庫上有多個(gè)事務(wù)同時(shí)執(zhí)行的時(shí)候,根據(jù)隔離級(jí)別的不同,可能會(huì)出現(xiàn)臟讀、幻讀和不可重復(fù)讀。標(biāo)準(zhǔn)隔離級(jí)別包括讀未提交、讀提交、可重復(fù)讀和串行化。

讀未提交

如果用這種隔離級(jí)別,事務(wù)執(zhí)行的時(shí)候會(huì)讀到其他未提交事務(wù)的數(shù)據(jù),我們稱為臟讀。

客戶端A

start transaction;

update users set name = 'hello' where id = 1;

select * from users where id = 1; #此時(shí)可以讀到 name,更新為hello

客戶端B

start transaction;

select * from users where id = 1; #此時(shí)讀到 name為hello

在此隔離級(jí)別下,客戶端 B 讀到了客戶端 A 還未提交的事務(wù)即還未 commit 的事務(wù),即產(chǎn)生的臟讀現(xiàn)象。

讀提交

如果用這種隔離級(jí)別,事務(wù)執(zhí)行的時(shí)候會(huì)讀到其他已提交事務(wù)的數(shù)據(jù),我們稱為不可重復(fù)讀。

客戶端A

start transaction;

update users set name = 'hello' where id = 1;

commit;

客戶端B

start transaction;

select * from users where id = 1; #此時(shí) name不為hello

#此時(shí)客戶端A 完成 commit

select * from users where id = 1; #此時(shí) name為hello

在此隔離級(jí)別下,客戶端 B 讀到了客戶端 A 完成提交的事務(wù),產(chǎn)生了不可重復(fù)讀現(xiàn)象。

可重復(fù)讀

在同一個(gè)事務(wù)里,SELECT 語句獲得的結(jié)果是基于事務(wù)開始時(shí)間點(diǎn)的狀態(tài),同一個(gè)事務(wù)中 SELECT 語句得到的結(jié)果是一樣的,但是會(huì)有幻讀現(xiàn)象。

客戶端A

start transaction;

select * from users; #為空

#此時(shí)客戶端B 完成commit 操作

select * from users; #還是為空

insert into users(id, name) value (1, 'hello') #報(bào)主鍵沖突

客戶端B

start transaction;

select * from users; #為空

insert into users(id, name) values (1, 'hello');

commit;

在此隔離級(jí)別下,會(huì)產(chǎn)生幻讀現(xiàn)象。

串行化

在該事務(wù)級(jí)別下,事務(wù)都是串行順序執(zhí)行的,避免了臟讀,不可重復(fù)讀,幻讀問題。

客戶端A

start transaction;

insert into users(id, name) values (1, 'hello');

commit;

客戶端B

start transaction;

select * from users; #會(huì)一直堵塞住,直到客戶端A 完成提交

本文鏈接:http://www.yunweipai.com/36489.html

總結(jié)

以上是生活随笔為你收集整理的mysql堵塞等级_MySQL 事务隔离级别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。