亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • 騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)

發布時間:2020-08-03 06:32:49 來源:網絡 閱讀:1859 作者:騰訊技術 欄目:數據庫

本文根據朱閱岸老師在〖Gdevops 2017全球敏捷運維峰會廣州站〗現場演講內容整理而成。


騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


在公眾號對話框回復“數據庫技術”,可獲取完整PPT




講師介紹

朱閱岸,中國人民大學博士,騰訊基礎架構部高級工程師。研究方向主要為數據庫系統理論與實現、新硬件平臺下的數據庫系統以及TP+AP型混合系統。


本次分享大綱:

  1. 現代處理器及新型存儲的發展

  2. 現代處理器下的數據庫技術

  3. 面向新型存儲的數據庫系統

  4. 總結


大家應該都看過《星際穿越》,里面有很多震撼人心的場景,我個人印象較為深刻的還是老教授鼓勵庫珀去探索太空、尋找人類宜居星球時念的那首詩:“Do  not  go  gentle  into  that  good   night…Though wise men at their end know dark is right…”,意思就是不要溫柔地走進那個良夜。對于技術人來說,數據庫系統底層硬件面臨著革新,我們也應該去探索新技術,以更好地適配這些底層硬件,而不是停留在原地,因此我拿這句詩作為本次分享的開始。

現代處理器及新型存儲的發展


1、現代處理器

先給大家介紹一下現代處理器及新型存儲的發展。大概從2005年開始,CPU的生產商就不再追求CPU的頻率而轉向多核技術研究,這里一個很重要的原因就是能耗和制造工藝上的問題,使得他們不能再單純地追求提升頻率。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


在當前普通的服務器上,配備幾十個處理核心的處理器已相當常見,眾核的概念也開始流行起來。那什么是眾核?眾核,是在英文上有一個專門的詞,叫做many-core,跟單核是對應的,主要是指集成了成百上千個處理核心的處理器。多核處理器大家可能很熟悉了,但大家有沒注意到memory-wall效應這個現象呢?


以前CPU訪問一個內存,大概只要一個時間周期的時間,現在需要上百個時間周期,訪問內存成了一個比較昂貴的操作,特別是在如今大內存和內存計算這個環境下,memory-wall的效應更加嚴重,所以怎么樣去克服,使得程序具有局部性,成為了最重要的一件事情,即如何克服memory wall的問題。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)



2、新型存儲設備

大家是否聽過非易失性內存?英特爾剛剛推出的3D XPoint技術,就屬于這類范疇的技術,即內存掉電了以后,數據不會丟失。它兼具磁盤和內存的特性,結合了兩者的優點,也就是具有磁盤的持久存儲特性和內存的快速訪問,主要特點是非低失、低延時、大容量,以及讀寫不對稱。


大家可以想象一下,有了這種硬件以后,我們系統設計者需要考慮的東西就不再是所謂的I/O的問題了,而是可以專注地把注意力放在高性能計算上,通俗地講就是關注系統的擴展性問題。


  • 原理介紹

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


剛才所說的新型存儲——非易失性內存主要有以下四種實現,其中最為成熟、最具市場前景的就是這個稱之為相變存儲的技術。


  1. 相變存儲器:材料可以在結晶狀態與非結晶狀態轉變

  2. 自旋磁矩:改變兩層磁性材料磁矩方向

  3. 鐵電材料:材料所形成的電荷高低,二元狀態

  4. 憶阻器:是一種有記憶功能的非線性電阻

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


根據國外工程師的逆向工程,英特爾的3D XPoint(傲騰),采用的就是這種技術。它的技術特點是利用相變材料,具有結晶和非結晶兩種狀態,這兩種狀態對應著低電阻和高電阻,對應著1和0。相比存儲器的單元結構主要有以下部件組成:雙層的導熱片,然后加熱絕緣體,以及相變材質。通過加熱器,對這個相變材質進行加熱,它就會呈現結晶和非結晶兩種狀態。其它的技術實現,有興趣可私下討論,這里就不多講了。


  • 相關參數


主要還是PCM的技術,是目前最為重要的一種技術。我們來看一下它的參數,這里主要是一些相關文獻上摘取的數據,其中我們比較關注的是讀寫延遲、帶寬、壽命,以及密度(容量)。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


從表格中可以看到,PCM和Flash相比,它的讀寫延遲要低兩個數量級,而它的壽命要高兩個數量級,并且容量的大小和Flash差不多,而跟內存相比,它的讀延遲已經是很接近了,但這個寫延遲和帶寬上還有差距,所以目前而言,PCM代替內存是不可能的事情,而在一段時間內這兩種存儲是會共同存在于計算機體系結構中。


另外一個有意思的現象就是PCM的密度,它的容量要比內存大2到4倍,而且在空閑功耗,即系統空閑的時候,這個功耗是內存的1%。因為內存要不斷地去刷新,維護內存單元里面的數據,所以這是一個很耀眼的特性,特別是對于數據中心而言。


  • DBMS的設計


我們都知道系統的底層硬件決定著上層軟件的設計,現在數據庫系統最主要的矛盾是飛速發展的硬件與始于上世紀70年代的數據庫系統的陳舊設計思想。眾所周知,磁盤I/O是那個時期系統性能的主要瓶頸,而該系統的設計者主要考慮的是自己怎樣把這個系統設計得更好,以規避這個磁盤I/O的問題。在我們的數據庫系統里面,同樣隨處可見這種設計思想。針對這種磁盤時代而提出的算法思想,在大并發下將會呈現相當嚴重的性能問題。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


這個研究是在2010年卡內基梅隆大學的數據庫研究小組,對幾個開源數據庫的性能測試結果。可以看到,在多核處理器下這些數據庫系統的性能、擴展性都不能夠令人滿意。這篇論文拉開了數據庫系統多核優化的序幕,特別是開源軟件,例如MySQL、PG在該時期就開始重視多核擴展性的問題,他們意識到原來在多核環境下,系統會有如此表現。


  • 時間都去哪兒了呢?


那么,數據庫系統的事務執行時間都耗費到哪去了?下面是麻省理工大學的研究結論——數據庫系統大部分的時間都耗費在緩存池管理、日志子系統上,只有12%左右的時間是耗費在真正有用的工作上。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


這些模塊當中存在著大量的臨界區,這個臨界區設計得相當粗糙,下面我們可通過分析一個代碼片段來進行解析。在系統的設計上,經常是一把大鎖,不假思索地加上去保護臨界區,幾百行的代碼。正如剛才看到的,在這種情況下,當系統并發度起來時,數據庫系統的性能是相當差的。


現代處理器下的數據庫技術

James Gray大家是否聽過呢?在現在數據庫系統里,跟事務相關的技術基本都是James Gray提出來的。但可惜的是,在2007年,他駕著一艘帆船出海,然后消失了。美國出動了海軍陸戰隊都沒有找到他。作為一個神奇人物,他憑借著對數據庫事務的突出貢獻獲得圖靈獎。


為了克服剛才所謂的內存墻技術,James Gray曾說過這么一句話:RAM Locality Is King,就是說數據和程序行為的局部性才是克服CPU和內存的速度不匹配的終極武器。


  • RAM-Locality設計原則


數據庫里面主要采用以下幾種技術優化性能,一種是列存儲技術。列存儲技術,主要用在OLAP,像MySQL、PG等OLTP型數據庫都是用行存儲技術。為什么要用列存儲技術呢?是因為進行數據分析的時候,經常會出現寬表或有幾百個字段的表,但通常只需要訪問表中的某一些字段,比如要訪問銷售字段,對銷售字段進行累加,做一個聚集操作。采用列存儲,可以更好地優化高速緩存的使用率,減少cache miss,克服內存墻問題。


另外就是設計高速緩存友好的數據結構或算法。像現在的數據庫采用一次一元組的查詢處理方式對程序局部性很不友好。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


什么叫一次一元組呢?數據庫系統的查詢語句,都是翻譯成操作樹。在樹的節點之間,操作符通過get_next函數驅動子節點獲取一條元組,遞歸調用下去,葉子節點將數據返回。函數的頻繁調用會產生嚴重的cache miss問題,所以現在新型的OLAP系統都是采用向量化查詢執行引擎,上層操作符不再是一條一條數據地處理了,而是一批一批數據處理,減少函數調用的開銷和上下文的切換以最大化數據和程序指令的局部性。此外,hash join也針對cache大小將hash table進行劃分以增強數據與指令的數據性減少cache miss。


  • 一個例子


騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


這是針對Cache友好而設計算法的例子。在PG 9.5之前,系統判斷事務活躍性或獲取系統快照時,要用到事務的起始時間、事務ID等。這些字段都放在PGPROC這個結構體里,這個結構體有25個成員,但做可見性判斷時,只需要用到幾個成員就夠了。因此采用這種設計系統會把其它無關字段讀入,污染其它cache line,造成嚴重的cache miss以及Cache浪費問題。所以后面他們就把用于可見性判斷等經常訪問的字段放在另一個結構體里面叫做PGXACT。打了這個補丁之后,在大并發下這個性能收益是相當客觀的,性能數據如圖中右上紅色數據所示。


因此,針對Memory  Wall這個問題,設計cache友好的數據結構與算法是一個很奏效的方法。


  • 避免熱點與簡化臨界區


針對多核的問題,我們還要避免熱點的問題,簡化臨界區。就像我們經常看到的,并發一大,系統性能就掉了下來。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


這是微軟的內存數據庫Hekaton的一個實驗結果。截取了事務在提交時的一個時間戳。這個全局的原子操作都會導致這個性能的問題。但針對MySQL、PG這兩種數據庫,性能問題還遠遠輪不到像類似于這種原子操作來引發。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


這就是我剛才所提到的問題,我們的磁盤數據庫的設計原則是優化磁盤IO。事務在提交時,不需要刷臟,以避免隨機IO。我們有一個專門的術語,叫做No force,也就是說事務提交時,不用去刷臟頁,但系統會把日志先刷下去。它這種集中式的設計,很容易導致性能的問題。針對更新密集型的工作負載,這個模塊的性能問題更加突出。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


傳統的先寫日志的算法(Write-ahead Logging),PG也好、MySQL也好,一般分為三個步驟,首先獲取一把大鎖,保護shared  Log  Buffer的這個數據結構;然后把日志記錄拷貝到相應的日志緩沖區;最后釋放這把鎖。這是最傳統的做法。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


我們現在也跟社區里面去探討了是否可以廢棄集中式設計,采用分布式日志的問題。就是不采用一個日志管理器,轉而使用多個Log Buffer同時把日志序列號改成邏輯時間戳。


在PG9.4版本以前,就采用剛才那么一個粗放的形式,加一把大鎖,然后臨界區里面進行搗鼓,例如長度計算、拷貝日志、一些邊界檢查等。這個臨界區的代碼大概有300行左右。但后來他們發現這個模塊的性能問題實在太嚴重了。


解決的方法是把日志文件抽象成線性長度,寫入日志時把位置預留出來。位置確定以后就把鎖放掉,因為系統知道往哪里去寫入數據,根本就不需要把日志拷過去再放鎖。并且事務之間可以并行地去拷貝日志。優化以后,性能提升了大概20%到30%左右,PG社區里面有相應的測試報告。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


他二哥注:更多分布式日志可閱讀另一篇文章《用分布式日志優化單機數據庫系統將成未來標配?》


  • 鎖管理器(鎖申請)


另外一種是數據庫里邏輯鎖的問題。數據庫里面的加鎖,是通過一個哈希表實現的,表里面的維護有很多鎖的信息。這個鎖其實就是一個標記,例如要加一個行鎖,就把這個鎖的Table ID、Row ID拿過來作為key,然后哈希到這個鎖表里。同時標記這個鎖屬于哪種類型,是共享鎖還是排他鎖等。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


但在大并發或沖突比較嚴重的情況下,這個鎖表是會引發問題的。因為它是一個共享的數據結構,很多事務都要跟鎖表打交道,頻繁地加鎖以及釋放鎖引發熱點問題。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


PG 9.2采用了繼承鎖技術,把共享表級鎖緩存在本地,然后在事務之間傳遞,不用把共享表鎖歸還給鎖管理器,減少跟共享的數據結構的交互,提高系統的并發性。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


面向新型存儲的數據庫系統

接下來我們來探討一下面向新型存儲的數據庫系統。底層的存儲變了,數據庫系統架構各方面肯定都要去改變。


這里我做了一下總結,NVRAM具有的六個主要特性:一種是可字節尋址,它的行為模式就相當于內存,可以字節尋址,而不再像磁盤采用Block尋址了,然后是閑時低功耗、使用壽命長、非易失性、存儲容量大、快速地隨機讀寫。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


目前而言,NVRAM接入DBMS主要有三種方式,最左邊的是我們傳統的數據庫系統架構,維護兩個Buffer,一個是Log Buffer,另外一個是Data  Buffer。Log  Buffer是事務日志集中寫入的內存區域;DATA  Buffer用于緩存數據頁,事務訪問數據時首先在這個buffer里面尋找所需的數據。MySQL里面的Buffer Pull就是指這個DATA  Buffer。


第一種接入方式就是我們可以直接把它作為磁盤的替代直接拿過來,數據庫系統軟件不需要改動。這種方式當然是可以獲得收益,因為底層I/O速度變快了,但沒有發揮它最大的收益,軟件的復雜度還是在那里,不多不少。


第二種是作為日志的存儲,現在大家使用的機器內存都很大了,我們的I/O基本上發生在一個地方,就是寫日志。為了不丟數據,日志是必須落盤的。把NVRAM作為日志存儲的設備,可以用比較小的代價獲得比較好的收益,第二種接入方式就是把它作為日志存儲,而設計相應的算法與優化臨界區。


第三種方式,是全系統接入的,系統經過全面的改造,把數據放在NVRAM。這個可以跟第二種接入方式對比一下,系統不再維護Log  Buffer這個數據結構,完全被廢棄掉。


  • write-behind logging


CMU在VLDB 2017剛剛發表的研究稱之為,write-behind logging,就是NVRAM全系統接入的一種方式。他們的idea是,write-ahead Logging是磁盤時代的算法,現在我不用先寫日志了。先寫日志的問題就是數據庫系統宕掉以后,可能需要很長時間地去恢復。它為了避免隨機IO不將數據刷盤,轉而順序寫出日志。系統恢復時要先拿到一個檢查點,然后從檢查點開始去掃描日志,把日志記錄拿出來,一條條地重放。數據量大的時候,這是相當耗時的一個工作。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)

他們針對NVRAM提出一個新算法稱之為write-behind Logging,就是事務提交的時候,直接把臟頁寫入NVRAM(因為NVRAM的隨機IO也是相當快的)。臟頁刷盤以后,再去寫日志。

騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


他們所設計的日志記錄是這樣子,不用再去構造什么After-image,直接就寫上事務提交的時間區間(Cp,Cd)就行了。小于CP這個時間點的事務都已經提交了,而落在這個時間區間(Cp,Cd)里面的事務,就是還沒有提交的。在事務恢復的時候,系統知道這個時間區間的事務沒有提交,對其它事務不可見。系統沒有必要去進行Redo操作了,因為數據都已經持久化。系統崩潰恢復時,需要一趟掃描日志,建立崩潰時候的時間區間(檢點可以減少需要掃描的日志量)。建立這個時間窗口相當于undo操作。


  • TPC-C benchmark


騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


他們對采用不用算法的系統的恢復時間做了一個比較,可以看到write-behind Logging的恢復時間,大概可以達到即時恢復的效果。系統起來,馬上就可以對外提供服務,但這個協議是專門針對非易失性內存而設計的,在這個磁盤SSD上,性能比較差。在這個NVM上,WBL的性能有30%左右的提升。


總結


  1. 應用需求、行業數據以及計算機硬件是拉動這個數據庫系統發展的三駕馬車;

  2. 在這個多核與內存計算的時代下,系統設計人員更應該將精力放在系統的擴展性上,更應該注重數據訪問的局部性,克服所謂的內存墻問題;

  3. 此外,NVM的出現可能會顛覆系統架構。它的出現使得系統設計人員可以將注意力完全地從I/O上移除,專注系統擴展性設計。


狄更斯說:“這是最壞的時代,同時也是最好的時代”,這個時代給了我們挑戰,同時也為數據庫系統從業人員帶來了機遇!


Q&A

【問題1】:請教老師,我們是做金融行業的,想問一下目前有哪些場景這一塊會用得比較多?剛剛聽了分享,感覺這一塊硬件上的性能還是相對比較好的。

答:現在這個應用的場景,簡單來說可以提升IO性能,例如用來存儲日志,可以快速提升系統性能。還有就是在大數據分析的場景,用來提升系統的IO能力。  


【問題2】:現在有哪些廠家有提供剛剛講的這一塊?具體有哪些廠商?

答:騰訊現在有在做這一塊的優化,英特爾年初推出了相應的硬件,這個硬件我們也拿到了,也在做相關的優化。跟著社區,我們也在做一些交流來提升系統的擴展性的問題。

追問:騰訊在數據庫這邊有支持和服務?

答:現在我們還沒有放到云上去,目前在內部做一些相應的開發。很快就會在云上推出相關產品。

追問:剛才講了很多是PG的,騰訊應該也做了一些優化,那這方面會不會有一些開源?

答:有,這都是開源的。  

追問:哪里可以拿到?

答:PG或者MySQL社區里面,這些優化都是會提交到社區里面的。

   

【問題3】:剛看到老師PPT里有對TPCC的測試,因為現在TPCC基本上快被淘汰了,有沒有去做過TPCE和TPCDS相關的測試呢?

答:這個你可能有點誤會,因為這兩個場景是不同的,我們數據庫里面有很多benchmark,比如TPCC、TPCH、TPCDS,他們是針對不同的場景,有些是針對OLAP,有些是針對OLTP。像大家比較熟悉的sysbench,其實是針對OLTP去做的,剛才你說的那個就是OLAP的應用場景。

追問:H和DS是對OLAP性能測試嗎?C是對TP的。

答:對,他們的應用場景不同。TPCC是衡量一個事務型數據庫,到底能達到一個什么樣性能的標準,這個比較具有說服力。



騰訊技術工程 | 透過新硬件環境下的存儲技術,看未來數據庫系統崛起(附PPT)


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛扎县| 布尔津县| 乌海市| 昌宁县| 北海市| 安阳市| 琼中| 万宁市| 辽阳市| 河北区| 上林县| 石景山区| 宜昌市| 若尔盖县| 平定县| 晋江市| 汕头市| 会东县| 南溪县| 甘洛县| 弥勒县| 小金县| 大足县| 上思县| 沛县| 杭锦旗| 鲁甸县| 广宁县| 威海市| 黑河市| 阿克陶县| 黄冈市| 永丰县| 武强县| 武定县| 准格尔旗| 宁安市| 嘉鱼县| 竹北市| 南平市| 凉山|