国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL數(shù)據(jù)庫事務(wù)原理及應(yīng)用

瀏覽:213日期:2023-05-05 10:12:01
目錄
  • 1 事務(wù)的使用
    • 1.1 事務(wù)概念
    • 1.2 事務(wù)的提交
    • 1.3 事務(wù)的常見操作
  • 2 事務(wù)隔離
    • 2.1 事務(wù)并發(fā)時(shí)出現(xiàn)的問題
    • 2.2 事務(wù)隔離級別

1 事務(wù)的使用

1.1 事務(wù)概念

事務(wù)就是一組DML語句組成,這些語句在邏輯上存在相關(guān)性,這一組DML語句要么全部成功,要么全部失敗,是一個(gè)整體。MySQL提供一種機(jī)制,保證我們達(dá)到這樣的效果。事務(wù)還規(guī)定不同的客戶端看到的數(shù)據(jù)是不相同的。

事務(wù)就是要做的或所做的事情,主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù)。假設(shè)一種場景:你畢業(yè)了,學(xué)校的教務(wù)系統(tǒng)后臺 MySQL 中,不在需要你的數(shù)據(jù),要?jiǎng)h除你的所有信息(一般不會:) ), 那么要?jiǎng)h除你的基本信息(姓名,電話,籍貫等)的同時(shí),也刪除和你有關(guān)的其他信息,比如:你的各科成績,你在校表現(xiàn),甚至你在論壇發(fā)過的文章等。這樣,就需要多條 MySQL 語句構(gòu)成,那么所有這些操作合起來,就構(gòu)成了一個(gè)事務(wù)。

正如我們上面所說,一個(gè) MySQL 數(shù)據(jù)庫,可不止你一個(gè)事務(wù)在運(yùn)行,同一時(shí)刻,甚至有大量的請求被包裝成事務(wù),在向 MySQL 服務(wù)器發(fā)起事務(wù)處理請求。而每條事務(wù)至少一條 SQL ,最多很多 SQL ,這樣如果大家都訪問同樣的表數(shù)據(jù),在不加保護(hù)的情況,就絕對會出現(xiàn)問題。甚至,因?yàn)槭聞?wù)由多條 SQL 構(gòu)成,那么,也會存在執(zhí)行到一半出錯(cuò)或者不想再執(zhí)行的情況,那么已經(jīng)執(zhí)行的怎么辦呢?

所以,一個(gè)完整的事務(wù),絕對不是簡單的 sql 集合,還需要滿足如下四個(gè)屬性:

  • 原子性:一個(gè)事務(wù)(transaction)中的所有操作,要么全部完成,要么全部不完成,不會結(jié)束在中間某個(gè)環(huán)節(jié)。事務(wù)在執(zhí)行過程中發(fā)生錯(cuò)誤,會被回滾(Rollback)到事務(wù)開始前的狀態(tài),就像這個(gè)事務(wù)從來沒有執(zhí)行過一樣。
  • 一致性:在事務(wù)開始之前和事務(wù)結(jié)束以后,數(shù)據(jù)庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預(yù)設(shè)規(guī)則,這包含資料的精確度、串聯(lián)性以及后續(xù)數(shù)據(jù)庫可以自發(fā)性地完成預(yù)定的工作。
  • 隔離性:數(shù)據(jù)庫允許多個(gè)并發(fā)事務(wù)同時(shí)對其數(shù)據(jù)進(jìn)行讀寫和修改的能力,隔離性可以防止多個(gè)事務(wù)并發(fā)執(zhí)行時(shí)由于交叉執(zhí)行而導(dǎo)致數(shù)據(jù)的不一致。事務(wù)隔離分為不同級別,包括讀未提交( Read uncommitted )、讀提交( read committed )、可重復(fù)讀( repeatable read )和串行化( Serializable )
  • 持久性:事務(wù)處理結(jié)束后,對數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會丟失

1.2 事務(wù)的提交

事務(wù)的提交方式常見的有兩種:

  • 自動提交
  • 手動提交

查看事務(wù)提交方式

mysql> show variables like "autocommit";+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit | ON |+---------------+-------+1 row in set (0.41 sec)

用 SET 來改變 MySQL 的自動提交模式

mysql> SET AUTOCOMMIT=0; #SET AUTOCOMMIT=0 禁止自動提交Query OK, 0 rows affected (0.00 sec)mysql> show variables like "autocommit";+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit | OFF |+---------------+-------+1 row in set (0.00 sec)mysql> SET AUTOCOMMIT=1; #SET AUTOCOMMIT=1 開啟自動提交Query OK, 0 rows affected (0.00 sec)mysql> show variables like "autocommit";+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit | ON |+---------------+-------+1 row in set (0.01 sec)

1.3 事務(wù)的常見操作

開啟事務(wù):start transaction;

執(zhí)行多條SQL語句

回滾或提交:rollback/commit;

說明:rollback即是全部失敗,commit即是全部成功

2 事務(wù)隔離

2.1 事務(wù)并發(fā)時(shí)出現(xiàn)的問題

臟讀(第一個(gè)事務(wù)修改數(shù)據(jù)但沒有提交,第二個(gè)事務(wù)就讀取,在第一個(gè)事務(wù)回滾后,第二個(gè)事務(wù)讀取的就是臟數(shù)據(jù))

不可重復(fù)讀(一個(gè)事務(wù)兩次讀取數(shù)據(jù),中間有另一個(gè)事務(wù)修改,第一個(gè)事務(wù)兩次讀取的數(shù)據(jù)就不同)

幻讀 一個(gè)事務(wù)兩次讀取,中間有另一個(gè)事務(wù)執(zhí)行了插入操作,造成第一個(gè)事務(wù)看到不同的結(jié)果

2.2 事務(wù)隔離級別

讀未提交(Read Uncommitted): 在該隔離級別,所有的事務(wù)都可以看到其他事務(wù)沒有提交的執(zhí)行結(jié)果。(實(shí)際生產(chǎn)中不可能使用這種隔離級別的),但是相當(dāng)于沒有任何隔離性,也會有很多并發(fā)問題,如臟讀,幻讀,不可重復(fù)讀等,我們上面為了做實(shí)驗(yàn)方便,用的就是這個(gè)隔離性。

讀提交(Read Committed) :該隔離級別是大多數(shù)數(shù)據(jù)庫的默認(rèn)的隔離級別(不是 MySQL 默認(rèn)的)。它滿足了隔離的簡單定義:一個(gè)事務(wù)只能看到其他的已經(jīng)提交的事務(wù)所做的改變。這種隔離級別會引起不可重復(fù)讀,即一個(gè)事務(wù)執(zhí)行時(shí),如果多次 select, 可能得到不同的結(jié)果。

可重復(fù)讀(Repeatable Read): 這是 MySQL 默認(rèn)的隔離級別,它確保同一個(gè)事務(wù),在執(zhí)行中,多次讀取操作數(shù)據(jù)時(shí),會看到同樣的數(shù)據(jù)行。但是會有幻讀問題。

串行化(Serializable): 這是事務(wù)的最高隔離級別,它通過強(qiáng)制事務(wù)排序,使之不可能相互沖突,從而解決了幻讀的問題。它在每個(gè)讀的數(shù)據(jù)行上面加上共享鎖。但是可能會導(dǎo)致超時(shí)和鎖競爭(這種隔離級別太極端,實(shí)際生產(chǎn)基本不使用)

隔離級別臟讀不可重復(fù)讀幻讀讀未提交×××讀提交√××可重復(fù)讀√√×串行化√√√

到此這篇關(guān)于MySQL數(shù)據(jù)庫事務(wù)原理及應(yīng)用的文章就介紹到這了,更多相關(guān)MySQL數(shù)據(jù)庫事務(wù)內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MySQL
相關(guān)文章:
主站蜘蛛池模板: 一区二区三区日韩精品 | 日韩激情中文字幕一区二区 | 最新国产一区二区精品久久 | 一级做a爰片久久毛片欧美 一级做a爰片久久毛片人呢 | 中文字幕一区二区三区免费视频 | 免费一级毛片在播放视频 | 国内自拍网站 | 成人三级精品视频在线观看 | 亚洲人成免费 | 男女上下爽无遮挡午夜免费视频 | 日本三级欧美三级 | 拍拍拍又黄又爽无挡视频免费 | 精品亚洲成a人在线观看 | 欧美+日本+国产+在线观看 | 国产一区二区三区国产精品 | 一级特级aaa毛片 | 性感美女视频黄.免费网站 性高湖久久久久久久久 | 午夜啪啪福利视频 | 欧美一区二区视频 | 欧美色老头oldvideo | 99久久99热久久精品免费看 | 欧美美女视频网站 | 亚洲综合一区二区不卡 | 欧美人成在线观看ccc36 | 免费永久观看美女视频网站网址 | 国产成人精品久久二区二区 | 免费一级网站免费 | 一二三区在线观看 | 日本韩国欧美在线 | 人与拘一级a毛片 | 日韩一区二区三区四区不卡 | 看久久久久毛片婷婷色 | 看真人视频一级毛片 | 欧美一级级a在线观看 | 中文字幕免费在线视频 | 正在播放国产精品放孕妇 | 在线播放精品一区二区啪视频 | 免费播放欧美毛片欧美aaaaa | 精品久久久久久国产免费了 | 国产色爽女小说免费看 | 欧美一级高清片免费一级 |