国产xxxxx在线观看_无码A片免费视频完整版_亚洲国产美女精品久久久久∴_最近2019年中文字幕免费下载_色欲网天天无码AV日韩

首頁 資訊 財(cái)經(jīng) 公益 彩店 奇聞 速遞 體育 提點(diǎn) 資訊 綜合 企業(yè) 市場(chǎng)

首頁
你現(xiàn)在的位置:

深入淺出話DB|柏睿數(shù)據(jù)RapidsDB高性能解密之自動(dòng)優(yōu)化

2022-08-10 11:04:28    來源:財(cái)訊界    作者:

 

各位同行朋友,本篇是本系列的最后一篇,也是最舒服的一篇,因?yàn)橹v內(nèi)容是自動(dòng)優(yōu)化,也就是不需要DBA主動(dòng)干預(yù),數(shù)據(jù)庫會(huì)沒事就給自己做優(yōu)化!是不是有種躺贏的感覺?讓本人給大家匯報(bào)數(shù)據(jù)庫到底是怎么實(shí)現(xiàn)自動(dòng)優(yōu)化的?

柏睿數(shù)據(jù)內(nèi)存分布式數(shù)據(jù)庫RapidsDB的自動(dòng)優(yōu)化體現(xiàn)在2個(gè)階段:

數(shù)據(jù)入庫過程

入庫過程的自動(dòng)優(yōu)化解決2個(gè)常見的OLAP型MPP數(shù)據(jù)庫問題,傳統(tǒng)的數(shù)控則需要外部手段或者手工執(zhí)行命令來實(shí)現(xiàn)相同的優(yōu)化效果:

1、自動(dòng)優(yōu)化小批量寫入(比如單行插入)過程,解決高頻小數(shù)據(jù)量寫入的性能低下問題;

2、自動(dòng)優(yōu)化數(shù)據(jù)入庫前排序入庫過程,解決因新數(shù)據(jù)無序?qū)懭氘a(chǎn)生的查詢性能不高問題。

RapidsDB實(shí)現(xiàn)的方式如下:

跟其他友商分布式數(shù)據(jù)庫的列存儲(chǔ)實(shí)現(xiàn)不同,RapidsDB將新寫入的數(shù)據(jù)先將它們以跳表的方式臨時(shí)存儲(chǔ)在內(nèi)存中。這個(gè)操作由數(shù)據(jù)庫后臺(tái)自動(dòng)處理的,這些以行存方式的跳過列表數(shù)據(jù),可以對(duì)讀取可見。

具體一點(diǎn),向列存表插入數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)先寫入臨時(shí)的行存跳表或創(chuàng)建新的列存儲(chǔ)支持行段。至于是臨時(shí)表還是新建行段,數(shù)據(jù)庫引擎需要由根據(jù)插入數(shù)據(jù)量大小和列存儲(chǔ)索引的當(dāng)前狀態(tài)的自動(dòng)觸發(fā)確定的。每個(gè)數(shù)據(jù)分區(qū)16 MB,是 INSERT 或 LOAD DATA 寫入數(shù)據(jù)優(yōu)化的默認(rèn)閾值。當(dāng)超過這個(gè)閾值時(shí),當(dāng)前外部寫入的數(shù)據(jù)就會(huì)在內(nèi)存經(jīng)過排序后,直接寫入新建的行段,反之則臨時(shí)存放在行存跳表中,經(jīng)過超時(shí)或者新來數(shù)據(jù)達(dá)到閾值后,寫入列存行段中。

經(jīng)過上述操作,數(shù)據(jù)入庫過程的自動(dòng)優(yōu)化完成。

數(shù)據(jù)入庫后

入庫過程后的自動(dòng)優(yōu)化,就是為了解決傳統(tǒng)分布式數(shù)據(jù)庫甚至Hadoop平臺(tái)也非常常見的:在用戶使用一段時(shí)間后,發(fā)現(xiàn)如果沒有對(duì)數(shù)據(jù)庫的存儲(chǔ)進(jìn)行人工定時(shí)維護(hù),則會(huì)引起性能大幅下降的問題,RapidsDB的3個(gè)自動(dòng)優(yōu)化手段,就是解決核心的3個(gè)性能影響因素:

1、無論做增刪改操作,數(shù)據(jù)庫都會(huì)自動(dòng)對(duì)相關(guān)的列存行段中的數(shù)據(jù)自動(dòng)重新排序,保證最佳的查詢性能;

2、當(dāng)列存行段內(nèi)重新排序完成后,其外的行段組會(huì)重新做排序組織,進(jìn)一步使數(shù)據(jù)有序,二次優(yōu)化性能;

3、經(jīng)過上述2點(diǎn)的優(yōu)化,有序數(shù)據(jù)使壓縮率得到提升,數(shù)據(jù)文件也得到合并,數(shù)據(jù)文件個(gè)數(shù)同時(shí)也會(huì)減少。IO讀寫性能可以在整個(gè)使用過程中,一直保存在極高的狀態(tài)中。

基本實(shí)現(xiàn)手段如下:

我們都知道如果表中的行在所有行段中都是全局排序的,那么列式表的性能最好。實(shí)際上,在連續(xù)寫入的情況下,維持這樣的順序是極難的。

RapidsDB使用了一種高級(jí)的算法,允許它在新增或更新數(shù)據(jù)時(shí)盡可能保持有序。這個(gè)過程被稱為background merger,并且為使行段的數(shù)據(jù)順序能夠得到持續(xù)優(yōu)化,則該過程會(huì)一直在后臺(tái)自動(dòng)運(yùn)行。

當(dāng)background merger在運(yùn)行過程中,在庫內(nèi)數(shù)據(jù)被增刪改等改變時(shí),它會(huì)停止到當(dāng)前任務(wù)并且重新開始。鑒于每次只處理一小塊行段數(shù)據(jù),所以被停止的任務(wù)影響的只是少量的數(shù)據(jù)。只有在大量的更新工作負(fù)載下,重新排序處理效率才會(huì)顯著減慢,這是因?yàn)榱硪粋€(gè)機(jī)制pessimistic merger會(huì)鎖定當(dāng)前正在處理的行段。用戶也可以通過運(yùn)行命令OPTIMIZE TABLE手動(dòng)觸發(fā)pessimistic merger。我們將在下面解釋如何決定是否有必要進(jìn)行該指令,并如何運(yùn)行它。

RapidsDB使用sorted row segment group(排序行段組)的概念來描述參與排序的一組行段。即行段重新排序的過程,并且對(duì)于一個(gè)行段而言,其最小的行號(hào)不小于其之前的任何行段中最大的行號(hào),則這些行段形成排序的行段組。這里所描述的一行比另一行小,是代表該行的CLUSTERED COLUMNSTORE鍵的列值比另一行的列值小。

如果數(shù)據(jù)有一個(gè)完美的全局順序,它將由一個(gè)排序的行段組組成。如果剛?cè)霂斓脑紨?shù)據(jù)是以完全隨機(jī)的順序排列的,那么它會(huì)包含與行段一樣多的排序行段組。background merger的任務(wù)邏輯就是重新組織行段之間的行,即盡量減少排序的行段組的數(shù)量。

以下面的例子直觀介紹:

要檢查特定表的已排序行段組的當(dāng)前狀態(tài),請(qǐng)?jiān)贑LI環(huán)境中運(yùn)行SHOW COLUMNAR MERGE STATUS FOR來查看:

\

讓我們仔細(xì)看結(jié)果的第一行,我們知道存儲(chǔ)在分區(qū)0上的表的切片具有3個(gè)有序的行段組,一個(gè)由741個(gè)行段組成,一個(gè)由16個(gè)行段組成,最后一個(gè)由1行段組成,共計(jì)758個(gè)行段??紤]這種有序的行段組對(duì)非常簡(jiǎn)單查詢的影響:

\

根據(jù)排序行段組的定義,第一個(gè)排序的行段組最多包含一個(gè)包含user_group = 15的行的行段,除非user_group = 15位于兩個(gè)行段的邊界上,或者如果存在較大數(shù)據(jù)傾斜并且?guī)讉€(gè)行段僅由user_group = 15的行組成。類似的,第二排序行段組中最多一個(gè)行段包含相關(guān)行。這樣,總共758個(gè)行段中只有三個(gè)將被打開和具體化。雖然本例中的查詢非常簡(jiǎn)單,但類似的推理同樣適用于復(fù)雜查詢中。

現(xiàn)在我們看一下分區(qū)2上有序的行段組。很明顯,它的優(yōu)化程度遠(yuǎn)遠(yuǎn)低于剩下的2個(gè),類似上面所示的選擇查詢將會(huì)導(dǎo)致物化8個(gè)行段。如果啟用了background merger,并且沒有或者少量工作負(fù)載同時(shí)運(yùn)行,那么這個(gè)分區(qū)將會(huì)在幾秒鐘內(nèi)得到優(yōu)化。然而,在數(shù)據(jù)庫執(zhí)行大量的增刪改任務(wù)時(shí),background merger的處理性能會(huì)被影響。在這種情況下,不如通過手動(dòng)觸發(fā)pessimistic merger,讓增刪改任務(wù)和后臺(tái)優(yōu)化任務(wù)前后腳獨(dú)立完成更合理:

\

如果當(dāng)我們執(zhí)行OPTIMIZE TABLE時(shí)運(yùn)行SHOW COLUMNAR MERGE STATUS,那么我們將會(huì)看見其作用:

\

新出現(xiàn)的一行代表分區(qū)3上正在進(jìn)行一個(gè)手動(dòng)合并,此時(shí)已經(jīng)完成了53.12%的工作任務(wù)。

當(dāng)完成合并任務(wù)后,現(xiàn)在情況更好了:

\

請(qǐng)注意,在本例中,沒有任何分區(qū)被合并到單個(gè)有序的行段組中。其原因是,兩種不同的合并方式均采用一種高級(jí)算法,該算法被優(yōu)化為在并發(fā)寫入的情況下進(jìn)行小的分批次工作,并將數(shù)據(jù)保持在幾個(gè)有序的行段組中,而不是試圖將所有數(shù)據(jù)合并到單個(gè)有序的行段組中。如果可以犧牲一些數(shù)據(jù)處理時(shí)間來獲得更高的查詢性能,則可以運(yùn)行手動(dòng)命令,將每個(gè)分區(qū)上的數(shù)據(jù)合并到一個(gè)有序的行段組中:

\

此時(shí),任何選擇查詢將只具體化每一個(gè)分區(qū)的一個(gè)行段。

當(dāng)向列式表中插入少量行時(shí),使用內(nèi)存中行存儲(chǔ)支持的段來存儲(chǔ)行。當(dāng)這個(gè)以行存儲(chǔ)為基礎(chǔ)的段被填滿時(shí),后臺(tái)刷新程序background flusher會(huì)定期將這些行刷新到磁盤中。通過運(yùn)行OPTIMIZE TABLEFLUSH,可以手動(dòng)將受行存儲(chǔ)支持的段刷新到磁盤中。

\

至此,例子中數(shù)據(jù)表t的后臺(tái)自動(dòng)排序完成了。整個(gè)過程中,數(shù)據(jù)庫無須用戶干預(yù),僅通過自動(dòng)優(yōu)化實(shí)現(xiàn)了高性能。

目前,RapidsDB已經(jīng)在國有某大行普惠金融項(xiàng)目應(yīng)用中運(yùn)行超過10個(gè)月,產(chǎn)品自動(dòng)優(yōu)化證明了它的能力和價(jià)值。中間經(jīng)歷過幾次10TB級(jí)的數(shù)據(jù)加載,每天10GB級(jí)的數(shù)據(jù)新增和更新,以及定時(shí)的滾動(dòng)式刪除。過程中,技術(shù)團(tuán)隊(duì)無需對(duì)數(shù)據(jù)庫做任何優(yōu)化干預(yù),相同場(chǎng)景的數(shù)據(jù)操作沒有任何性能下降的跡象!

免責(zé)聲明:市場(chǎng)有風(fēng)險(xiǎn),選擇需謹(jǐn)慎!此文僅供參考,不作買賣依據(jù)。

編輯:qysb005

標(biāo)簽:

中國企業(yè)新聞網(wǎng)版權(quán)與免責(zé)聲明:
1、中國企業(yè)新聞網(wǎng)所有內(nèi)容的版權(quán)均屬于作者或頁面內(nèi)聲明的版權(quán)人。未經(jīng)中國企業(yè)新聞網(wǎng)的書面許可, 任何其他個(gè)人或組織均不得以任何形式將河南企業(yè)網(wǎng)的各項(xiàng)資源轉(zhuǎn)載、復(fù)制、編輯或發(fā)布使用于其他任何場(chǎng)合;不得把其中任何形式的資訊散發(fā)給其他方, 不可把這些信息在其他的服務(wù)器或文檔中作鏡像復(fù)制或保存;不得修改或再使用中國企業(yè)新聞網(wǎng)的任何資源。若有意轉(zhuǎn)載本站信息資料, 必需取得中國企業(yè)新聞網(wǎng)書面授權(quán)。否則將追究其法律責(zé)任。
2、已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:中國企業(yè)新聞網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
3、凡本網(wǎng)注明“來源:XXX(非中國企業(yè)新聞網(wǎng))”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息, 并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。本網(wǎng)轉(zhuǎn)載其他媒體之稿件,意在為公眾提供免費(fèi)服務(wù)。如稿件版權(quán)單位或個(gè)人不想在本網(wǎng)發(fā)布, 可與本網(wǎng)聯(lián)系,本網(wǎng)視情況可立即將其撤除。
圖片欣賞
頻道推薦
內(nèi)容推薦
最近更新