成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊 OB 的緩沖區機制,你明白了嗎?

數據庫 其他數據庫
分布式數據庫廠商都在采用一些自己的獨特技術,讓數據庫更加適合通用型的場景,從而在擁有分布式數據庫的高可靠性、強大的橫向擴展能力之外,能夠像通用集中式數據庫一樣,對各種通用計算場景都能提供很好的支持。

今天我們來討論OB,我也是一個OB的初學者,因此我對OB的內在原理和應用特性也知之甚少,我的大部分觀點都是基于我對數據庫的理解套用在OB上的。

另外,對于OB、TIDB等基于LSM-TREE存儲引擎的數據庫,經常會有人產生一些對比,因此在一些分析中我也會與TIDB進行對比。同樣,對于TIDB,我也是只知道一些皮毛,因此這些對比很可能也有一些錯誤。

以前我也寫文章分析過,TIDB和OCEANBASE雖然底層都是使用LSM-TREE存儲引擎,不過其架構上是不同的。OB是一種典型的MPP架構的數據庫,而TIDB是存儲計算完全分離的架構。不過TIDB 5.0中也引入了MPP計算框架,具體是如何實現的,我還沒有做研究,因此這里不展開討論。

以往TIDB與OB進行爭論的時候,TIDB往往會指出MPP的缺點來證明TIDB比OB的優越,而TIDB引入MPP計算框架反而證明了這種指責的不全面。以前我也說過,目前的大多數分布式數據庫并不具備通用計算的能力,可能針對某種業務負載很好用,而對于一些其他的負載,就差強人意。

實際上任何一個分布式數據庫廠家都在努力改善自己的產品,從而適應更廣泛的應用場景。5.0以前的TIDB沒有MPP的sharding key死結,不過也正因為如此,在TIDB層面上實現BUFFER CACHE十分困難,因為這需要引入緩沖區融合機制,在大規模分布式計算引擎上引入緩沖區融合將會是一個災難。缺少TIDB層面BUFFER CAHCE,如果你不能接受穩定的稍慢,那么就需要提高硬件的配置,使用ssd盤等方式來提高SQL的響應速度,因此TIDB對硬件的要求很高。TIDB 5.0引入MPP計算模式我想也是從這方面考慮入手吧,這種計算模式的引入可以優化TIDB以往版本對某些場景的支持能力。

OB和TIDB的架構不同,OB是天生的SHARED NOTHING的MPP架構的,因此OB與其他的LSM-TREE存儲引擎的數據庫不同,設計了十分復雜的緩沖結構。為什么說是十分復雜的緩沖結構呢,因為OB是一種多租戶的分布式數據庫,在租戶隔離上設計的十分完整,緩沖區可以細粒度到租戶級別,每個租戶都有獨立的內存,CPU等的資源隔離。

另外一方面,Oceanbase是基于谷歌的五分鐘原則設計的數據庫系統(谷歌認為如果某個數據5分鐘內會被訪問至少一次,那么這個數據最好是放在內存中)。OB采用LSM-TREE,因此需要大量的內存來存儲MEMT 。因此操作系統的物理內存可以盡可能多的交給OB SERVER,由OceanBase自己管理。

從上面的一張圖里可以看到OB的內存使用策略。通過memory_limit_percentage參數可以設置最多有多少OS的內存可以給OB使用。這個參數的建議設置值是如果服務器內存為384GB,則設置為80%,如果服務器內存為512GB或者更高,則設置為90%。從這個策略也可以看出,OB還是比較吃內存的,為了有比較好的性能,建議給OB的服務器配置多一點內存。

實際上,OB的緩沖區除了其他LSM-TREE數據庫所通用的實現外,還和B-TREE/HEAP存儲引擎的數據庫一樣設計了BLOCK CACHE。

可以看出,OB設計了兩層CACHE,一層是從SST讀取到內存中的BLOCK CACHE,這層CACHE可以用于一般的SQL掃描操作,而在BLOCK CACHE之上,還設計了一層row cache,存儲某些熱行,這些熱行用于一些簡單的,執行頻率較高的,訪問少量行的SQL。

這種雙層CACHE的設計(MEMSTORE的寫緩沖不算在內)實際上是十分復雜的。Oracle數據庫也有BLOCK CACHE和ROW CACHE兩種緩沖設計,不過ROW CACHE只用來做字典緩沖使用,實際上是一種應用特定的緩沖,是應用級的。Oracle數據庫對數據字典的訪問是有特殊的業務邏輯的,為了提高效率而設計的ROW CACHE是按照固定的業務邏輯來設計的。而通用型的業務負載無法使用小巧高效的ROW CAHCE,必須使用統一的BLOCK CACHE。

而OB的row cache并不是用于內部計算使用,是面向通用業務場景的,如果某一行在block cache中的使用頻率較高,那么就會被放入row cache中。為了避免每個訪問都去查詢row cache,從而導致row cache的命中率過低,影響CACHE的訪問效率,在row cache上增加了一個布魯姆過濾器。

我第一次看到OB的row cache結構的時候,就感到這種設計很互聯網。這種架構,對于一些互聯網應用的開發人員來說可能很熟悉,很容易讓人想起應用-布魯姆過濾器-REDIS-數據庫的應用架構。對于這層CACHE,我還是十分疑惑的,因為CACHE的設計原則是簡單高效,這層和業務結合的十分緊密的row cache是不是讓應用開發人員自己去建立更好一些呢?當然對于應用類型十分吻合這種架構,又沒有能力自己構建內存緩沖層的用戶來說,這層row cache確實可以簡化應用。我還沒有深入去研究OB的row cache,不知道這層CACHE是否是可以在租戶級關閉的,如果能夠很方便的開關,這是一個不錯的設計,否則我覺得如果遇到一些和這種場景不適合的應用,這種結構很可能會影響整體的性能。

LSM-TREE存儲引擎的BLOCK CACHE性能問題,在國外的一些論壇上也多有討論,比較主流的觀點是效率不如HEAP/B-TREE存儲引擎的數據庫。這可能也是OB要引入row cache的一個原因吧。OB官方文檔上對此的解釋是:OLTP 業務大部分操作為小查詢,通過小查詢優化,OceanBase 數據庫避免了傳統數據庫解析整個數據塊的開銷,達到了接近內存數據庫的性能。

這種描述,對于某些應用場景來說可能是準確的,特別是像支付寶這樣的交易類系統,而對于ERP,MIS系統等來說,就不一定適合了。大部分傳統企業的OLTP系統并不能整合成如此簡單的訪問場景。從今天我們討論的問題上,我們也看得出,分布式數據庫廠商都在采用一些自己的獨特技術,讓數據庫更加適合通用型的場景,從而在擁有分布式數據庫的高可靠性、強大的橫向擴展能力之外,能夠像通用集中式數據庫一樣,對各種通用計算場景都能提供很好的支持。

責任編輯:武曉燕 來源: 白鱔的洞穴
相關推薦

2022-10-19 08:19:32

動態基線預警

2022-05-31 07:32:19

JDK8API工具

2023-06-14 08:15:34

算法合并操作Winner

2022-10-24 20:25:40

云原生SpringJava

2021-09-16 21:34:52

5G專線

2024-05-30 08:19:52

微服務架構大型應用

2022-05-06 08:26:32

JavaSPI機制

2019-02-27 13:58:29

漏洞緩沖區溢出系統安全

2017-01-09 17:03:34

2022-07-27 08:31:28

SQL開發控制

2011-12-14 16:30:42

javanio

2023-04-04 08:42:30

IT成本技術堆

2009-09-24 18:16:40

2018-01-26 14:52:43

2009-11-16 17:26:17

Oracle優化緩沖區

2009-11-16 17:08:59

Oracle日志緩沖區

2017-07-04 17:09:10

Map環形緩沖區數據

2014-07-30 11:21:46

2010-12-27 10:21:21

2011-07-20 10:54:14

C++
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品一区二区三区视频 | 久久成人亚洲 | 亚洲高清视频在线 | 中文字幕一区二区三区不卡在线 | 国产免费高清 | a免费视频 | 色综合久 | 亚洲成人中文字幕 | 久久国产精品-国产精品 | 亚洲欧美日韩国产 | h视频在线播放 | 欧美精品日韩精品国产精品 | 五月激情六月婷婷 | 国产精品高| 91在线视频免费观看 | 日本免费一区二区三区 | 一区二区视频免费观看 | 国产区在线观看 | 成人av免费 | 成人在线观看网址 | 91黄色片免费看 | 一级看片免费视频 | 色爱综合网| 9999在线视频 | 久久久av | 狠狠爱综合网 | 亚洲午夜精品视频 | 人妖一区 | 欧美性生活视频 | 精品伊人 | 玖玖视频网 | 久久99精品久久久久久国产越南 | 日韩电影一区 | 日韩欧美视频 | av网址在线| 亚洲精品视频在线 | 亚洲欧美综合精品久久成人 | 亚洲一区亚洲二区 | 日本小视频网站 | 一区二区三区视频在线 | 91视频.com|