創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
成都創(chuàng)新互聯(lián)網(wǎng)絡(luò)公司擁有10多年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗(yàn),上1000+客戶的共同信賴。提供成都網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、網(wǎng)站定制、買友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)本篇文章給大家分享的是有關(guān)虛讀是不可重復(fù)讀的意思嗎,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
虛讀和不可重復(fù)讀是不一樣的。
臟讀 dirty reads:當(dāng)事務(wù)讀取還未被提交的數(shù)據(jù)時,就會發(fā)生這種事件。舉例來說:Transaction 1 修改了一行數(shù)據(jù),然后 Transaction 2 在 Transaction 1 還未提交修改操作之前讀取了被修改的行。如果 Transaction 1 回滾了修改操作,那么 Transaction 2 讀取的數(shù)據(jù)就可以看作是從未存在過的。
不可重復(fù)的讀 non-repeatable reads:當(dāng)事務(wù)兩次讀取同一行數(shù)據(jù),但每次得到的數(shù)據(jù)都不一樣時,就會發(fā)生這種事件。舉例來說:Transaction 1 讀取一行數(shù)據(jù),然后 Transaction 2 修改或刪除該行并提交修改操作。當(dāng) Transaction 1 試圖重新讀取該行時,它就會得到不同的數(shù)據(jù)值(如果該行被更新)或發(fā)現(xiàn)該行不再存在(如果該行被刪除)。
虛讀 phantom read:如果符合搜索條件的一行數(shù)據(jù)在后面的讀取操作中出現(xiàn),但該行數(shù)據(jù)卻不屬于最初的數(shù)據(jù),就會發(fā)生這種事件。舉例來說:Transaction 1 讀取滿足某種搜索條件的一些行,然后 Transaction 2 插入了符合 Transaction 1 的搜索條件的一個新行。如果 Transaction 1 重新執(zhí)行產(chǎn)生原來那些行的查詢,就會得到不同的行。
事務(wù)場景是這樣的:
對于同一個銀行帳戶A內(nèi)有200元,甲進(jìn)行提款操作100元,乙進(jìn)行轉(zhuǎn)帳操作100元到B帳戶。如果事務(wù)沒有進(jìn)行隔離可能會并發(fā)如下問題:
1、第一類丟失更新:首先甲提款時帳戶內(nèi)有200元,同時乙轉(zhuǎn)帳也是200元,然后甲乙同時操作,甲操作成功取走100元,乙操作失敗回滾,帳戶內(nèi)最終為200元,這樣甲的操作被覆蓋掉了,銀行損失100元。
2、臟讀:甲取款100元未提交,乙進(jìn)行轉(zhuǎn)帳查到帳戶內(nèi)剩有100元,這是甲放棄操作回滾,乙正常操作提交,帳戶內(nèi)最終為0元,乙讀取了甲的臟數(shù)據(jù),客戶損失100元。
3、虛讀:和臟讀類似,是針對于插入操作過程中的讀取問題,如丙存款100元未提交,這時銀行做報表進(jìn)行統(tǒng)計查詢帳戶為200元,然后丙提交了,這時銀行再統(tǒng)計發(fā)現(xiàn)帳戶為300元了,無法判斷到底以哪個為準(zhǔn)?
大家好像覺得統(tǒng)計這個東西肯定是時時更新的,這種情況很正常;但是如果統(tǒng)計是在一個事務(wù)中的時候就不正常了,比如我們的一個統(tǒng)計應(yīng)用需要將統(tǒng)計結(jié)果分別輸出到電腦屏幕和遠(yuǎn)程網(wǎng)絡(luò)某臺計算機(jī)的磁盤文件中,為了
提高性能和用戶響應(yīng)我們分成2個線程,這時先完成的和后完成的統(tǒng)計數(shù)據(jù)就可能不一致,我們就不知道以哪個為準(zhǔn)了。
4、不可重復(fù)讀:甲乙同時開始都查到帳戶內(nèi)為200元,甲先開始取款100元提交,這時乙在準(zhǔn)備最后更新的時候又進(jìn)行了一次查詢,發(fā)現(xiàn)結(jié)果是100元,這時乙就會很困惑,不知道該將帳戶改為100還是0。
和臟讀的區(qū)別是,臟讀是讀取前一事務(wù)未提交的臟數(shù)據(jù),不可重復(fù)讀是重新讀取了前一事務(wù)已提交的數(shù)據(jù)。
5、第二類丟失更新:是不可重復(fù)讀的一種特例,如上,乙不做第二次查詢而是直接操作完成,帳戶內(nèi)最終為100元,甲的操作被覆蓋掉了,銀行損失100元。感覺和第一類丟失更新類似。
以上就是虛讀是不可重復(fù)讀的意思嗎,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
網(wǎng)頁標(biāo)題:虛讀是不可重復(fù)讀的意思嗎-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://muchs.cn/article36/iocpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、ChatGPT、手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站、動態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容