亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费

新聞中心

Mysql事務(wù)特性和級別原理解析

這篇文章主要介紹了Mysql事務(wù)特性和級別原理解析,性和文中通過(guò)示例代碼介紹的非常詳細,對大家??的別解析學(xué)習或者工作具有一定的參考學(xué)習價(jià)值,需要的朋友可以參考下

一、什么是原理事務(wù)?

數據庫事務(wù)(簡(jiǎn)稱(chēng):事務(wù))是數據庫管理系統執行過(guò)程中的(′?_?`)一個(gè)邏輯單位,由一個(gè)有限的性和數據庫操作序列構成。

二、別解析事務(wù)的原理四大屬性

分別是原子性、一致性、性和隔離性、別解析持久性。原理

1、性和原子性(Atomicity)

原子性是??別解析指事務(wù)包含的所有操作要么全部成功,要么全部失敗回滾,原理??因此事務(wù)的(de)性和操作如果成功就必須要完全應用到數據庫,如果操作ヽ(′▽?zhuān)?ノ失敗則不能對數據庫有任何影響。別解析

2、原理一致性(C(?⊿?)onsistency)

一致性是指事務(wù)必須使數據庫從一個(gè)一致性狀態(tài)變換到另一個(gè)一致性狀態(tài),也就是說(shuō)一個(gè)事務(wù)執行之前和執行之后都必須處于一致性狀態(tài)。舉例來(lái)說(shuō),假設用戶(hù)A和用戶(hù)B兩者的錢(qián)加起來(lái)一共是1000,那??么不管A和B之間如何轉賬、轉幾次賬,事務(wù)結束后兩個(gè)用戶(hù)的錢(qián)相加起來(lái)應該還得是1000,這就是事務(wù)的一致性。

3、隔離性(Isolation)

隔離性是當多個(gè)用戶(hù)并發(fā)訪(fǎng)問(wèn)數據庫時(shí),比如同時(shí)操作同一張表時(shí),數據庫為每一個(gè)用戶(hù)開(kāi)啟的事務(wù),不能被其他事務(wù)的操作所干擾,多個(gè)并發(fā)事(shi)務(wù)之間要相互隔離。關(guān)于事務(wù)的隔離性數據庫提供了多種隔離級別,稍后會(huì )介紹到。

4、持久性(Durability)

持久性是指一個(gè)事務(wù)一旦被提交了,那么對數據庫中的數據的改變就是永久性的,即便是在數據庫系統遇到故障的情況下也不會(huì )??丟失提交事務(wù)的操作。例如我們在使用JDBC操作數據庫時(shí),在提交事務(wù)方法后(′?_?`),提示用戶(hù)事務(wù)操作完成,當我們程序執行完成(′▽?zhuān)?直到看到提示后,就可以認定事務(wù)已經(jīng)正確提交,即使這時(shí)候數據(ju)庫出現了問(wèn)題,也必須(?????)要將我們的事務(wù)完全執行完成。否則的話(huà)就會(huì )造成我們雖然看到提示事務(wù)處理完畢,但是數據??庫因為故障而沒(méi)有執行事務(wù)的重大錯誤??。這是不允許的。

三、mysql隔離級別

READ UNCOMMITTED(未提交讀)

在未提交讀這個(gè)事務(wù)級別中,一個(gè)事務(wù)可以讀取到另外一個(gè)事務(wù)(wu)未提交ヽ(′▽?zhuān)?ノ的數據.

例如 A 事務(wù)更新了一個(gè)字段,但是未提交在 B 事務(wù)中,讀取id為1000的??記錄的name字段的時(shí)候,name??的值為'aaa',可是 A 事務(wù)并沒(méi)有commit,所以name = 'aaa'有可能是會(huì )被回滾的,那么,??A 事務(wù)讀取了未提交事務(wù)的數據稱(chēng)為臟讀(Dirty Read)

READ COMMITTED(提交讀)

提交讀這個(gè)事務(wù)級別中,一個(gè)事務(wù)可以讀取到另外一個(gè)事務(wù)提交之后的數據.?

例如 A 事務(wù)讀取到了id為1000的記錄的name字段為aaa ,然后 B 事務(wù)這個(gè)時(shí)候更新了這條記錄的name值,并且提交了,這個(gè)時(shí)候 A 事務(wù)再次讀取name的話(huà),name的值就是bbb了,所以在一個(gè)事務(wù)中,對一個(gè)字段進(jìn)行多次讀取,可能得到的值不同.

A事務(wù)前后兩(liang)次讀取的值不一致!

REPEATABLE READ(可重復讀)

可重復讀這個(gè)事務(wù)級別中,一個(gè)事務(wù)重復去讀的字段不會(huì )改變.

例如 A 事務(wù)(╥_╥)讀取到了id為1000的記錄的name值為aaa,然后 B 事務(wù)中把name改成了bbb,并且 B 事務(wù)提交了,A 事務(wù)再次去讀name的時(shí)候并不會(huì )讀取到bbb,所以 A 事務(wù)相當于在一個(gè)獨立的世界,外界的(T_T)任何改動(dòng)不會(huì )影響 A 事務(wù).

但ヽ(′▽?zhuān)?ノ是,可重復讀會(huì )導致幻讀出現,什么是幻讀呢,舉個(gè)例子:

A 事務(wù)查詢(xún)一個(gè)表,表里只有一條記錄,id為1,但是這個(gè)時(shí)候 B 事務(wù)??插入了一條數據,id為2,A 事務(wù)因為不知道有id為2的數據,所以這(′▽?zhuān)?)個(gè)時(shí)(shi)候A也插入了一?????條id為2(′?_?`)的數據,這個(gè)時(shí)候肯定會(huì )插入失敗.這種情況就是幻讀

備注: MYSQL中的innoDB通過(guò)MVCC(多版本并發(fā)控制)解決了幻讀,另外MYSQL的默認事務(wù)級別就是可重復讀,Oracle和SQL Server 默認隔離級別為 已提交(jiao)讀(Read committed)

SERIALIZAB??LE(可串行化)

可串行化??事務(wù)級別,把讀取的每一行數據都加了鎖

加鎖了的有點(diǎn)就是,避免了臟讀和幻讀,另外還避免了不可重復讀的可能性,但是因為加鎖了,減少了很大(′?`)的并發(fā)性??,因為同一時(shí)刻,只有一個(gè)線(xiàn)程能夠獲取到鎖.還可能導致大量超時(shí)問(wèn)題.

小結:不可重復讀的和幻讀很容易混淆,不可重復讀側重于修改,幻讀側重于新增或刪除。解決不可重復讀的問(wèn)題只需鎖住滿(mǎn)足條件的行,解決幻讀需要鎖表

隔離級別:

級別越高,數據越安全,但性能越低。

以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

來(lái)源:腳本之家

鏈接:https://www.jb51.net/article/201676.htm

上一篇:黃岡招聘cad設計_黃岡設計網(wǎng)站哪家好 下一篇:大豐市網(wǎng)絡(luò )推廣

Copyright © 2026 天津九安特機電工程有限公司 版權所有   網(wǎng)站地圖

 
亚洲女同成aV人片在线观看|亚洲www啪成人一区二区麻豆|亚洲国产中日韩精品综合|亚洲国产成人精品一级片|亚洲无码在线视频免费 铜梁县| 肥西县| 临颍县| 清水河县| 容城县| 喀什市| 荆门市| 唐山市| 祥云县| 曲阜市| 专栏| 肇庆市| 元朗区| 铜陵市| 眉山市| 马边| 嘉祥县| 纳雍县| 辽中县| 蒙阴县| 德庆县| 南充市| 大姚县| 平顺县| 镶黄旗| 清水河县| 辽宁省| 广灵县| 定兴县| 环江| 凉山| 昌都县| 黔东| 上思县| 英山县| 南丰县| 临猗县| 息烽县| 乐陵市| 黎城县| 揭阳市| http://444 http://444 http://444 http://444 http://444 http://444