Transaction 也就是所謂的事務(wù)了,通俗理解就是一件事情。從小,父母就教育我們,做事情要有始有終,不能半途而廢。 事務(wù)也是這樣,不能做一般就不做了,要么做完,要么就不做。也就是說,事務(wù)必須是一個(gè)不可分割的整體,就像我們在化學(xué)課里學(xué)到的原子,原子是構(gòu)成物質(zhì)的最小單位。于是,人們就歸納出事務(wù)的第一個(gè)特性:原子性(Atomicity)。我靠,一點(diǎn)都不神秘嘛。
海湖新網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。特別是在數(shù)據(jù)庫領(lǐng)域,事務(wù)是一個(gè)非常重要的概念,除了原子性以外,它還有一個(gè)極其重要的特性,那就是:一致性(Consistency)。也就是說,執(zhí)行完數(shù)據(jù)庫操作后,數(shù)據(jù)不會(huì)被破壞。打個(gè)比方,如果從 A 賬戶轉(zhuǎn)賬到 B 賬戶,不可能因?yàn)?A 賬戶扣了錢,而 B 賬戶沒有加錢吧。如果出現(xiàn)了這類事情,您一定會(huì)非常氣憤,什么 diao 銀行啊!
當(dāng)我們編寫了一條 update 語句,提交到數(shù)據(jù)庫的一剎那間,有可能別人也提交了一條 delete 語句到數(shù)據(jù)庫中。也許我們都是對同一條記錄進(jìn)行操作,可以想象,如果不稍加控制,就會(huì)出×××煩來。我們必須保證數(shù)據(jù)庫操作之間是“隔離”的(線程之間有時(shí)也要做到隔離),彼此之間沒有任何干擾。這就是:隔離性(Isolation)。
要想真正的做到操作之間完全沒有任何干擾是很難的,于是乎,每天上班打醬油的數(shù)據(jù)庫專家們,開始動(dòng)腦筋了,“我們要制定一個(gè)規(guī)范,讓各個(gè)數(shù)據(jù)庫廠商都支持我們的規(guī)范!”,這個(gè)規(guī)范就是:事務(wù)隔離級別(Transaction Isolation Level)。能定義出這樣牛逼的規(guī)范真的挺不容易的,其實(shí)說白了就四個(gè)級別:
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
千萬不要去翻譯,那只是一個(gè)代號(hào)而已。從上往下,級別越來越高,并發(fā)性越來越差,安全性越來越高,反之則反。
當(dāng)我們執(zhí)行一條 insert 語句后,數(shù)據(jù)庫必須要保證有一條數(shù)據(jù)永久地存放在磁盤中,這個(gè)也算事務(wù)的一條特性, 它就是:持久性(Durability)。
歸納一下,以上一共提到了事務(wù)的 4 條特性,把它們的英文單詞首字母合起來就是:ACID,這個(gè)就是傳說中的“事務(wù) ACID 特性”!
這四個(gè)家伙當(dāng)中,誰才是老大?
其實(shí)想想也就清楚了:原子性是基礎(chǔ),隔離性是手段,持久性是目的,真正的老大就是一致性。數(shù)據(jù)不一致了,就相當(dāng)于“江湖亂套了,流氓戴胸罩”。所以說,這三個(gè)小弟都是跟著“一致性”這個(gè)老大混,為他全心全意服務(wù)。
這四個(gè)家伙當(dāng)中,其實(shí)最難理解的反倒不是一致性,而是隔離性。因?yàn)樗潜WC一致性的重要手段,是工具,使用它不能有半點(diǎn)差池,否則后果自負(fù)!
事務(wù)并發(fā)所引起的跟讀取數(shù)據(jù)有關(guān)的問題,各用一句話來描述一下:
1.臟讀:事務(wù) A 讀取了事務(wù) B 未提交的數(shù)據(jù),并在這個(gè)基礎(chǔ)上又做了其他操作。
首先看看“臟讀”,看到“臟”這個(gè)字,我就想到了惡心、骯臟。數(shù)據(jù)怎么可能臟呢?其實(shí)也就是我們經(jīng)常說的“垃圾數(shù)據(jù)”了。比如說,有兩個(gè)事務(wù),它們在并發(fā)執(zhí)行(也就是競爭)。
余額應(yīng)該為 1500 元才對!請看 T5 時(shí)間點(diǎn),事務(wù) A 此時(shí)查詢余額為 0 元,這個(gè)數(shù)據(jù)就是臟數(shù)據(jù),它是事務(wù) B 造成的,明顯事務(wù)沒有進(jìn)行隔離,滲過來了,亂套了。
2.不可重復(fù)讀:事務(wù) A 讀取了事務(wù) B 已提交的更改數(shù)據(jù)。
事務(wù) A 其實(shí)除了查詢了兩次以外,其他什么事情都沒有做,結(jié)果錢就從 1000 變成 0 了,這就是重復(fù)讀了??上攵?,這是別人干的,不是我干的。其實(shí)這樣也是合理的,畢竟事務(wù) B 提交了事務(wù),數(shù)據(jù)庫將結(jié)果進(jìn)行了持久化,所以事務(wù) A 再次讀取自然就發(fā)生了變化。
這種現(xiàn)象基本上是可以理解的,但在有些變態(tài)的場景下卻是不允許的。畢竟這種現(xiàn)象也是事務(wù)之間沒有隔離所造成的,但我們對于這種問題,似乎可以忽略。
3.幻讀:事務(wù) A 讀取了事務(wù) B 已提交的新增數(shù)據(jù)。
銀行工作人員,每次統(tǒng)計(jì)總存款,都看到不一樣的結(jié)果。不過這也確實(shí)也挺正常的,總存款增多了,肯定是這個(gè)時(shí)候有人在存錢。但是如果銀行系統(tǒng)真的這樣設(shè)計(jì),那算是玩完了。這同樣也是事務(wù)沒有隔離所造成的,但對于大多數(shù)應(yīng)用系統(tǒng)而言,這似乎也是正常的,可以理解,也是允許的。銀行里那些惡心的那些系統(tǒng),要求非常嚴(yán)密,統(tǒng)計(jì)的時(shí)候,甚至?xí)⑺械钠渌僮鹘o隔離開,這種隔離級別就算非常高了
第一條是堅(jiān)決抵制的,后兩條在大多數(shù)情況下可不作考慮。
這就是為什么必須要有事務(wù)隔離級別這個(gè)東西了,它就像一面墻一樣,隔離不同的事務(wù).
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞標(biāo)題:詳談事務(wù)的幾大特點(diǎn)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article36/decopg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站導(dǎo)航、ChatGPT、營銷型網(wǎng)站建設(shè)、定制網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容