![從TNT遇到的問題想到的另一種內存多版本的實現(xiàn)方案_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/472c164c-50d8-46a9-b0c2-63221c03c48c/472c164c-50d8-46a9-b0c2-63221c03c48c1.gif)
![從TNT遇到的問題想到的另一種內存多版本的實現(xiàn)方案_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/472c164c-50d8-46a9-b0c2-63221c03c48c/472c164c-50d8-46a9-b0c2-63221c03c48c2.gif)
![從TNT遇到的問題想到的另一種內存多版本的實現(xiàn)方案_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/21/472c164c-50d8-46a9-b0c2-63221c03c48c/472c164c-50d8-46a9-b0c2-63221c03c48c3.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.從TNT遇到的問題想到的另一種內存多版本的實現(xiàn)方案是網易傾力打造的一款基于云計算的分布式多媒體處理集群和專業(yè)音視頻技術,為客戶提供穩(wěn)定流暢、低時延、高并發(fā)的視頻直播、錄制、存儲、轉碼及點播等音視頻的PASS服務。在線教育、遠程醫(yī)療、娛樂秀場、在線金融等各行業(yè)及企業(yè)用戶只需經過簡單的開發(fā)即可打造在線音視頻平臺。現(xiàn)在,與大家分享一下從TNT遇到的問題想到的另一種內存多版本的實現(xiàn)方案。前陣子的工作中發(fā)現(xiàn)TNT在事務生命周期中涉及到多次的內外存日志同步,多次的同步直接導致事務性能低下。 TNT是基于另一個單獨的存儲引擎開發(fā)的,兩個存儲引擎會使很多問題復雜化,目前的TNT未實現(xiàn)完全的內外存分離,為得到
2、數(shù)據的唯一性標識Rowid,目前數(shù)據的Insert 是直接插入到外存中,同時產生外存日志。這就導致無論在事務提交或者回滾等等過程中,都需要涉及到外存的日志的操作和訪問。并且在恢復過程中內外存的并行恢復設計變得十分復雜。理想中的內存多版本數(shù)據庫應當是多版本的數(shù)據完整得存在于內存中,因此無論是回滾或者是其他操作都是在內存中完成,而只有所有事務都可見的數(shù)據才物化到外存中。因此事務中的數(shù)據的插入,更新,刪除,回滾等操作都是應該在內存中完成,只有在purge過程中才把數(shù)據刷到外存中,外存中的數(shù)據不保留任何版本的信息。以下簡單介紹一個簡要的設想當中的內外存分離的內存多版本的實現(xiàn)方案(只針對和目前TNT設計
3、中不同之處):針對TNT無法獲取rowid的問題,這里提出一個虛擬rowid的概念,當數(shù)據進入內存,但是又未進入外存時,在數(shù)據庫中利用一個唯一的虛擬rowid來標識。虛擬rowid由insert操作時系統(tǒng)統(tǒng)一分配。即在數(shù)據第一次物化到外存之前,都利用這個虛擬的rowid來標識數(shù)據。 purge操作會讓數(shù)據進入外存,因此,過程中部分的數(shù)據會得到屬于自己的真實rowid。Purge的操作分為兩步,第一步將內存數(shù)據物化到外存中,第二步,將第一步中涉及到的內存數(shù)據從內存中刪除。約定事務不跨越purge的兩個階段為了保存真實/虛擬rowid的映射關系,我們利用一個雙向hash來保存。雙向哈希在purge
4、第一階段中建立,在purge完成后刪除,因此在purge第二階段會發(fā)生雙向hash中有虛擬rowid,而內存中的數(shù)據已經被刪除的情況發(fā)生。purge過程中的數(shù)據更新,當發(fā)現(xiàn)被更新的數(shù)據是利用虛擬rowid標識,那么我們需要檢測雙向hash中是否有對應的真實rowid,如果有真實rowid,那么就將原來記錄的虛擬rowid更新成真實rowid。 purge過程中數(shù)據的掃描,我們分成表掃描和索引掃描來討論:這里需要過濾hash:記錄已經讀取的虛擬rowid1. 表掃描:內外存都要讀取, a. 先讀取外存數(shù)據,并尋找內存中的新版本。如果內存中的新版本是虛擬rowid標識,則選取
5、外存數(shù)據。并將這個虛擬rowid加入到虛擬rowid過濾hash中,否則選取內存數(shù)據。 b.讀內存數(shù)據,當讀到內存中一條虛擬rowid記錄時,到虛擬rowid過濾hash中進行過濾,防止重復讀。2. 索引掃描:內外存都要讀取,內外存一起讀取,因為虛擬rowid的大小不一定和真實rowid一致,這里會發(fā)生內外存索引數(shù)據排序不同的情況。在scan記錄的過程中,內外存兩個索引和TNT一樣同時進行掃描,因為在同一個索引key值時會發(fā)生上圖的情況,隨之而來的就是如何防止數(shù)據重復讀或者是漏讀的情況。一個簡單的例子,當讀到key = a , vrid = 2的內存索引項時,還未purge,然后purge這一
6、項到外存中,然后讀到外存對應的 key = a rrid = 6的這項。這便產生了重復讀。因此,這里采取的方案如下:1.若選取的內存項, a. 如果是虛擬rowid,則檢測是否存在于雙向hash中,若存在則跳過,若不存在,則返回。并將該虛擬rowid加入到虛擬rowid過濾hash中 b.如果是真實rowid,則直接返回。2.若選取的外存索引項,去雙向hash中查詢是否存在對應的虛擬rowid的內存項 a. 如果存在,則用虛擬rowid過濾hash去重。 b. 如果不存在,則直接返回。當讀到不同的key值時,可重置過濾hash。大對象:由于當前的插入完全在內存中
7、,新插入的大對象也需要在內存中維護,在purge過程中插入外存恢復:雙向hash是需要持久化,因此對雙向hash的修改需要記錄日志,這是因為如果不記錄真實/虛擬rowid映射關系,在恢復時會導致數(shù)據多次插入。雙向hash的恢復需要依賴外存數(shù)據庫的插入日志來生成,外存數(shù)據庫中需要額外記錄一個虛擬rowid的情況,這樣雖然是破壞了外存數(shù)據庫日志的獨立性,但是這里如果雙向hash日志獨立出來,無論是先于還是后于外存日志寫出都會出現(xiàn)問題。在purge階段會產生外存的日志。因此在purge階段如果發(fā)生系統(tǒng)crash,做邏輯恢復時,當對外存做插入時需要比對已經恢復的雙向hash,檢查是否需要再次做插入操作。方案的缺陷也很明顯:在purge過程中,無論是掃描還是更新,都會
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海股權轉讓合同模板
- 450億廣告投放框架合同正式簽署
- 人力資源和社會保障局與勞動合同法改革探討
- 個體戶全職員工標準勞動合同合同范本
- 個人小型店面租賃合同樣本
- 個體藥店并購轉讓合同及附件
- 產業(yè)合作投資合同
- 交通事故賠償合同范本大全
- 個人家政服務勞務合同
- 喪葬禮儀服務合同模板
- 班級管理交流-班主任工作經驗交流課件(共28張ppt)
- 建筑裝飾工程計量與計價試題一及答案
- 簡易勞務合同電子版
- 明代文學緒論
- 通用稅務自查情況說明報告(7篇)
- 體育賽事的策劃、組織與實施 體育賽事利益相關者
- 分析化學(高職)PPT完整版全套教學課件
- 晚熟的人(莫言諾獎后首部作品)
- m拱頂儲罐設計計算書
- 2023外貿業(yè)務協(xié)調期中試卷
- 新人教鄂教版(2017)五年級下冊科學全冊教學課件
評論
0/150
提交評論