![MySQL與MongoDB多文檔事務(wù)支持對(duì)比分析_第1頁(yè)](http://file4.renrendoc.com/view/46ef915c859a1cc4bd61363da98a84c7/46ef915c859a1cc4bd61363da98a84c71.gif)
![MySQL與MongoDB多文檔事務(wù)支持對(duì)比分析_第2頁(yè)](http://file4.renrendoc.com/view/46ef915c859a1cc4bd61363da98a84c7/46ef915c859a1cc4bd61363da98a84c72.gif)
![MySQL與MongoDB多文檔事務(wù)支持對(duì)比分析_第3頁(yè)](http://file4.renrendoc.com/view/46ef915c859a1cc4bd61363da98a84c7/46ef915c859a1cc4bd61363da98a84c73.gif)
![MySQL與MongoDB多文檔事務(wù)支持對(duì)比分析_第4頁(yè)](http://file4.renrendoc.com/view/46ef915c859a1cc4bd61363da98a84c7/46ef915c859a1cc4bd61363da98a84c74.gif)
![MySQL與MongoDB多文檔事務(wù)支持對(duì)比分析_第5頁(yè)](http://file4.renrendoc.com/view/46ef915c859a1cc4bd61363da98a84c7/46ef915c859a1cc4bd61363da98a84c75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 MySQL與MongoDB多文檔事務(wù)支持對(duì)比分析目 錄 TOC o 1-3 h z u HYPERLINK l _Toc533533876 一、局限性與限制條件 PAGEREF _Toc533533876 h 4 HYPERLINK l _Toc533533877 二、第一個(gè)事務(wù) PAGEREF _Toc533533877 h 6 HYPERLINK l _Toc533533878 三、事務(wù)隔離性演示 PAGEREF _Toc533533878 h 12MongoDB 4.0已經(jīng)發(fā)布GA版本,并且有許多新功能和改進(jìn)。在本文中,我們將重點(diǎn)關(guān)注主要功能,毫無(wú)疑問(wèn),這是對(duì)多文檔ACID事務(wù)的支持。
2、我們將圍繞隔離級(jí)別、可重復(fù)讀、幻讀、事務(wù)沖突檢測(cè)等主要功能,通過(guò)實(shí)驗(yàn)與MySQL一一做對(duì)比。首先會(huì)簡(jiǎn)述介紹下ACID事務(wù)隔離級(jí)別,然后再步入測(cè)試主題正文。原子性(Atomicity):事務(wù)包含的所有操作要么全部成功,要么全部失敗,不存在成功一半的概念。典型例子“西方二元對(duì)立思想非此即彼”:在二元邏輯體系中只存在兩種邏輯值,就是對(duì)和錯(cuò),或正和負(fù),不存在既對(duì)又錯(cuò)或非正非負(fù)的其他狀態(tài)。一致性(Consistency):一個(gè)事務(wù)執(zhí)行之前和執(zhí)行之后都必須處于一致性狀態(tài)。典型例子:“金龍,你借我5000元,下個(gè)月開支給你?!辈徽摻瘕堄檬裁捶绞浇o我轉(zhuǎn)賬,分幾次轉(zhuǎn),借錢結(jié)束后我銀行卡里的余額增加5000元,金
3、龍卡里少了5000元,不能突然蹦出來(lái)1萬(wàn)來(lái)。隔離性(Isolation):數(shù)據(jù)庫(kù)采用鎖機(jī)制來(lái)實(shí)現(xiàn)事務(wù)的隔離性,當(dāng)多個(gè)事務(wù)同時(shí)更新數(shù)據(jù)庫(kù)中相同的數(shù)據(jù)時(shí),只允許持有鎖的事務(wù)能更新該數(shù)據(jù),其他事務(wù)必須等待,直到前一個(gè)事務(wù)釋放了鎖,其他事務(wù)才有機(jī)會(huì)更新該數(shù)據(jù)。典型例子:“你去醫(yī)院看病,要先到護(hù)士那里分診排號(hào),如果多個(gè)患者加塞兒同時(shí)進(jìn)來(lái),大夫就發(fā)飆了,出去排隊(duì),只能一個(gè)一個(gè)看”。持久性(Durability):事務(wù)成功提交后,它對(duì)數(shù)據(jù)庫(kù)所做的修改就永久保存下來(lái),即使數(shù)據(jù)庫(kù)崩潰,數(shù)據(jù)還能恢復(fù)到事務(wù)成功提交后的狀態(tài)。典型例子:“你去ATM機(jī)取錢,結(jié)果ATM機(jī)故障了,你取出來(lái)了錢,卡里的余額不能沒(méi)減。”一、局
4、限性與限制條件1、多文檔事務(wù)僅適用于副本集。注:如果是單機(jī),需切到副本集模式。2、僅適用于WiredTiger存儲(chǔ)引擎。3、如果你的架構(gòu)是分片Sharding模式,事務(wù)是不支持的。分布式事務(wù)計(jì)劃在4.2版本里支持。4、事務(wù)只支持CRUD操作,DDL、DCL操作不支持。注:CRUD就是MySQL的DML,意思一樣叫法不同而已。5、事務(wù)無(wú)法在config、admin和local系統(tǒng)數(shù)據(jù)庫(kù)中讀取或?qū)懭搿?、事務(wù)無(wú)法在system.*(系統(tǒng)集合)里寫入。7、不能有大事務(wù)寫入,寫入集不能超過(guò)16MB(類似MariaDB Galera Cluster寫入集wsrep_max_ws_size限制),否則客戶
5、端直接報(bào)錯(cuò)。注:如果有大事務(wù),應(yīng)該考慮將這些大事務(wù)拆分成若干塊較小的事務(wù)。例如將大于2018年的狀態(tài)值更改為1,應(yīng)考慮循環(huán)1萬(wàn)條一批量更新,這一點(diǎn)跟MySQL玩法一樣。二、第一個(gè)事務(wù)在開始事務(wù)之前,必須創(chuàng)建會(huì)話。事務(wù)不能在會(huì)話外運(yùn)行。var session1 = db.getMongo().startSession()var session2 = db.getMongo().startSession()Mongo Shell里引入了三個(gè)用于創(chuàng)建,提交和終止事務(wù)的新命令:session.startTransaction()在當(dāng)前會(huì)話中啟動(dòng)事務(wù)mitTransaction()持久保存事務(wù)中的操作變
6、更session.abortTransaction()終止事務(wù)操作所做的變更1、在test庫(kù)創(chuàng)建t1表,并且插入4條數(shù)據(jù)。演示一演示二空閑事務(wù)受transactionLifetimeLimitSeconds參數(shù)影響,默認(rèn)60秒??赏ㄟ^(guò)以下命令查看:db.adminCommand( getParameter: 1, transactionLifetimeLimitSeconds: 1 )如果你想在線變更,可以通過(guò)下面的命令設(shè)置:db.adminCommand(setParameter:1,transactionLifetimeLimitSeconds:30)也可以寫死在/etc/f配置文件里永久
7、生效,格式如下:setParameter = transactionLifetimeLimitSeconds=30注:空閑事務(wù)是指當(dāng)一個(gè)事務(wù)長(zhǎng)時(shí)間未提交,那么這個(gè)連接就不能關(guān)閉,內(nèi)存就不釋放,并發(fā)一大,導(dǎo)致DB連接數(shù)增多,就會(huì)對(duì)性能產(chǎn)生影響。默認(rèn)是60秒,你可以根據(jù)自己的情況設(shè)定閾值。超過(guò)這個(gè)閾值,服務(wù)端自動(dòng)殺死未提交的空閑事務(wù)。三、事務(wù)隔離性演示演示一:事務(wù)沖突檢測(cè)當(dāng)兩個(gè)(或多個(gè))并發(fā)事務(wù)修改相同的文檔時(shí),會(huì)發(fā)生沖突。即使在尚未提交事務(wù)時(shí),MongoDB也可以立即檢測(cè)到?jīng)_突。這里和MySQL有些區(qū)別,MySQL可以通過(guò)參數(shù)innodb_lock_wait_timeout設(shè)置檢測(cè)到事務(wù)沖突后,
8、自動(dòng)終止回滾的時(shí)間,而MongoDB沒(méi)有提供該參數(shù)。當(dāng)在執(zhí)行創(chuàng)建索引時(shí),未加background:1)后臺(tái)創(chuàng)建。此時(shí)新事務(wù)將無(wú)法獲取所需的鎖,并且在等待參數(shù)maxTransactionLockRequestTimeoutMillis后事務(wù)終止回滾,默認(rèn)值是5毫秒。如果你想在線調(diào)整事務(wù)等待獲取鎖的時(shí)間,可以通過(guò)下面的命令設(shè)置:db.adminCommand(setParameter:1,maxTransactionLockRequestTimeoutMillis:15)也可以寫死在/etc/f配置文件里永久生效,格式如下:setParameter = maxTransactionLockRequ
9、estTimeoutMillis=15演示二:可重復(fù)讀Repeatable Read (可重復(fù)讀)可避免臟讀、不可重復(fù)讀的發(fā)生。不可重復(fù)讀側(cè)重點(diǎn)在于更新修改的數(shù)據(jù),即在同一個(gè)事務(wù)里,兩次查詢的數(shù)據(jù)結(jié)果不一致。與臟讀的區(qū)別是:臟讀是一個(gè)事務(wù)讀取了另一個(gè)事務(wù)未提交的臟數(shù)據(jù)。演示三:幻讀在MySQL默認(rèn)隔離級(jí)Repeatable Read下,剛才的操作,在會(huì)話二未提交的事務(wù)里,會(huì)莫名其妙地看到第5條數(shù)據(jù),這種現(xiàn)象稱為幻讀?;米x和不可重復(fù)讀很像,但幻讀側(cè)重點(diǎn)在于新增和刪除,而不可重復(fù)讀側(cè)重點(diǎn)在于更改,共同之處都是一個(gè)事務(wù)中兩次查詢得到的數(shù)據(jù)結(jié)果不一致。由此,從測(cè)試結(jié)果得出的結(jié)論是:MongoDB采用的默認(rèn)隔離級(jí)別是Snapsho
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年婚禮汽車服務(wù)行業(yè)深度研究分析報(bào)告
- 廢機(jī)油深加工潤(rùn)滑油基礎(chǔ)油可行性研究報(bào)告申請(qǐng)備案
- 二手挖機(jī)購(gòu)買合同范本
- 倉(cāng)儲(chǔ)與快遞合同范本
- 2025-2031年中國(guó)萬(wàn)能磨刀機(jī)行業(yè)市場(chǎng)調(diào)查研究及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年度經(jīng)濟(jì)適用房改造升級(jí)工程承包合同范本
- it設(shè)備合同范本
- 企業(yè)幫扶合同范本
- 借貸合同與欠款合同范本
- 上海epc合同范本
- GB/T 45177-2024人工光型植物工廠光環(huán)境技術(shù)規(guī)范
- 2025年中考語(yǔ)文模擬試卷(含答案解析)
- 2024-2025年天津河西區(qū)七年級(jí)上學(xué)期期末道德與法治試題(含答案)
- 2025年個(gè)人學(xué)習(xí)領(lǐng)導(dǎo)講話心得體會(huì)和工作措施例文(6篇)
- 2025大連機(jī)場(chǎng)招聘109人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2020-2025年中國(guó)中小企業(yè)行業(yè)市場(chǎng)調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 物流中心原材料入庫(kù)流程
- 長(zhǎng)沙市2025屆中考生物押題試卷含解析
- 2024-2025學(xué)年廣東省深圳市寶安區(qū)八年級(jí)(上)期末語(yǔ)文試卷
- 2024年芽苗菜市場(chǎng)調(diào)查報(bào)告
- 新版中華人民共和國(guó)會(huì)計(jì)法解讀學(xué)習(xí)課件
評(píng)論
0/150
提交評(píng)論