精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

RocksDB數據存儲格式分析

存儲
RocksDB本身只是一個KV存儲,用戶通過put(key,value)來寫入key,或者通過get(key)接口來獲取value,所以單從RocksDB而言,每條記錄都是一個key-value。那么當RocksDB作為一個存儲引擎接入到MySQL時,key-value結構如何存儲表中各個索引,以及如何記錄中各個列的信息是本文要具體討論的。

RocksDB本身只是一個KV存儲,用戶通過put(key,value)來寫入key,或者通過get(key)接口來獲取value,所以單從RocksDB而言,每條記錄都是一個key-value。那么當RocksDB作為一個存儲引擎接入到MySQL時,key-value結構如何存儲表中各個索引,以及如何記錄中各個列的信息是本文要具體討論的。

RocksDB引擎與InnoDB引擎類似,也是采用索引組織表,無論是表(主鍵索引)還是二級索引都是以LSM tree方式組織,RocksDB記錄主要包括三部分,key,value和meta三部分內容,具體見下表,后面通過介紹一條具體記錄在RocksDB引擎中的存儲格式再做詳細說明。

我們創建表,并寫入數據,如下:

  1. create table row_format(   
  2.     id int not null,   
  3.     c1 int,   
  4.     c2 char(10) not null,   
  5.     c3 char(10),   
  6.     c4 varchar(10),   
  7.     c5 varchar(10) not null,   
  8.     c6 blob,   
  9.     c7 binary(10) not null,   
  10.     c8 varbinary(10)) 
  11. engine=rocksdb; 
  12.  
  13. insert into row_format(id,c2,c4,c5,c7) values(1,'abc','abc','efg','111'

 

Key部分

由于表沒有主鍵,所以實質是rowid:

實際數據:

index_id:索引的編號,全局唯一。

rowid:由于表沒有主鍵,系統會產生一個bigint類型的rowid作為主鍵,占用8個字節,而InnoDB引擎的rowid占6個字節,需要注意的是rowid存儲采用的大端的存儲(高位存儲低字節),這里主要是為了memcompare。

Value部分

說明:

  • Value的最前面部分(0x1b)就是存放記錄的null信息。根據記錄中可以為null字段的個數,確認需要占用的字節數,如果小于8個,則只需要一個字節。例子中,c1,c3,c4,c6,c8均可以為null,因此需要5個bit,所以用1個byte表示Null-flag即可,由于插入記錄中,c4不為null,則對應的bit為0,也就是0x00011011。
  • 對于null,無論是定長還是非定長數據類型,都不占用真實的存儲空間,只需要一個bit位來表示為null即可。
  • 空串’’與null,上面提到了null需要占一個標記位,而對于’’,如果是變長字段仍然需要存儲長度信息,對于定長字段,則會補全。
  • 對于變長字段,比如varchar,0x03    0x61    0x62    0x63數據有len+data組成,如果數據長度小于256,len只需要占用一個byte;如果len大于255,且小于65536,則需要占用2個字節,對于longblob類型,則需要占4個字節。
  • 對于定長字段,不需要存長度信息直接存儲data,如果不足則補充。補充字符有點詫異,對于char類型,補充0x20,對于binary類型,補充0x00。
  • 對于lob類型,比如tinyblob,blob,mediumblob,longblob,以及對應的text類型,處理策略與varchar類似,存儲長度的字節數根據數據類型的范圍確定,比如blob長度占用2個字節,而longblob的長度占4個字節。所以在rocksdb里面,沒有innodb中所謂“溢出頁”的概念。對于innodb引擎,如果blob字段內容超過768字節,多余的data存儲在溢出頁,頁內通過20個字節指向溢出頁,主要包括第一個blob頁的space_id,page_no和起始偏移,如果存在多個blob頁,則頁與頁之間通過類似的方式進行關聯。具體可以參考btr0cur.h文件中關于BTR_EXTERN_xxx相關的宏定義,以及接口btr_copy_externally_stored_field_prefix_low。
  • 有關value部分的存儲實現可以參考rocksdb引擎接口 convert_record_to_storage_format,convert_record_from_storage_format和innodb引擎接口row_mysql_store_col_in_innobase_format,row_sel_field_store_in_mysql_format。

meta部分

meta部分主要是SequenceID,這個SequenceID在事務提交時產生,主要用于RocksDB實現MVCC,用于可見性判斷,此外meta中還包含flag信息,由于標示記錄類型,put,delete,singleDelete等,具體而言Sequence占7個字節,flag占1個字節。

RocksDB索引格式

RocksDB中,所有的數據都是通過索引來組織,與InnoDB類似,也是索引組織表,每個索引有一個全局唯一的index_id。索引主要包括兩類:主鍵索引和二級索引,前面介紹的記錄格式,也就是主鍵索引的格式,包括key,value和meta三部分。二級索引也包含key,value和meta三部分,但是value中不包含任何數據,只是包含checksum信息。

主鍵索引 

二級索引

對比InnoDB引擎(innodb_file_format=Barracuda,row_format=compact)

InnoDB記錄格式

我們仍然以上面的表結構來看看InnoDB的存儲格式。

  1. create table row_format(   
  2.     id int not null,   
  3.     c1 int,   
  4.     c2 char(10) not null,   
  5.     c3 char(10),   
  6.     c4 varchar(10),   
  7.     c5 varchar(10) not null,   
  8.     c6 blob,   
  9.     c7 binary(10) not null,   
  10.     c8 varbinary(10)) engine=innodb; 
  11.  
  12. insert into row_format(id,c2,c4,c5,c7) values(1,'1234','ab','efg','111'); 

記錄內容

說明

  1. 03 02 0a,這里存的是長度信息,所有非null的變長列信息都逆序存在一起,這里按先后順序是c5,c4,c2,這里innodb將char(10)也當作變長字段處理了。
  2. 1b存儲的是null信息,與rocksdb對null處理一致。00 00  18 ff b5存儲的是record-header。
  3. 00 00 00 00 28 00 00 00 00 01 01 03 83  00 00 01 36 01 10, 這三部分別是rowid,trxid和roll_ptr,分別占6個字節,6個字節和7個字節。
  4. 最后一部分是數據,null不占任何存儲空間,與rocksdb處理類似。

整體而言,InnoDB記錄格式包含了record_header(記錄頭信息),占5個字節,主要包括記錄號(heap_no),列數目,下一條記錄的位置以及是否刪除等信息。RocksDB則相對簡單,只有整體的value-size,以及通過Meta中flag標示記錄的狀態put 或者是delete。InnoDB將變長列長度信息集中存放在一起,使得查找任意列的代價都差不多,而RocksDB的變長列信息則是放在每列的前面,訪問最后一列需要逐一計算前面的列,才能定位。此外,由于InnoDB引擎與RocksDB引擎由于實現MVCC的機制不同,導致InnoDB引擎和RocksDB引擎需要存儲的額外信息也不同。InnoDB實現MVCC依賴于回滾段信息,記錄需要額外存儲trxid和roll_ptr兩個字段,分別是6個字節和7個字節(type,rsegid,pageNO,offset),其中type占一個bit位,標示insert 或者是update類型,rsegid回滾段id占7bit位,pageNo占4個字節,頁內偏移占2個字節。RocksDB實現MVCC則是依賴于SequenceID,通過SequenceID來判斷記錄的可見性,SequenceID占7個字節。

細節上來說,RocksDB引擎和InnoDB引擎在處理null,char和varchar的方式類似,但InnoDB對于char類型做了優化,統一作為varchar處理。另外RocksDB引擎沒有對blob做特殊處理。你可能會有疑問,RocksDB不是也有block_size嗎,如果設置為16k,blob數據超過16k怎么辦?對于InnoDB而言,由于表實質是以一個個page通過B-tree組織起來的,每個page是固定大小,當記錄非常大時,就需要借助溢出頁,通過鏈接的方式關聯起來。而RocksDB中block_size只是一個壓縮單位,并沒有嚴格約束,文件內容以block組織,由于文件中block可能是壓縮過的,因此每個block的大小不固定,通過偏移來定位具體某個block的位置。如果遇到大的blob數據,則可能這個block比較大,記錄所有數據存儲在一起,不會跨block。

對于索引長度限制也有所不同,對于InnoDB引擎來說,索引中單列長度不能超過767個字節,而RocksDB引擎單列長度不超過2048個字節,具體可以參考max_supported_key_part_length各自的實現;整個索引的長度,RocksDB和InnoDB都限制在3072個字節,實際上是server層的限制,因為它們的各自限制的長度都比server層的大。

 

責任編輯:武曉燕 來源: 阿里巴巴數據庫技術
相關推薦

2023-09-06 15:00:35

Pandas存儲格式

2021-12-11 08:05:12

FlinkRocksDB數據

2018-07-04 09:30:55

列式存儲格式

2011-12-29 09:33:38

云計算云存儲

2022-06-08 07:34:02

持久化數據存儲原理索引存儲格式

2024-12-12 09:24:28

RocksDB服務器

2022-08-31 08:04:08

Ceph配置選項

2020-03-03 13:42:08

數據存儲數據存儲

2024-09-03 08:40:31

2009-09-21 18:00:49

Hibernate X

2012-08-17 10:35:17

云計算存儲大數據

2019-11-26 09:56:48

Python數據存儲

2016-12-01 14:47:20

2017-07-04 10:58:57

SAN存儲網絡存儲系統架構

2010-07-09 10:42:38

HART協議

2019-05-28 10:32:29

TCPUDP SYN

2014-03-24 10:54:10

大數據分析

2015-12-15 10:51:14

軟件定義存儲數據中心

2018-05-23 08:39:18

AlluxioCeph對象存儲

2014-05-13 14:11:36

GoRedis
點贊
收藏

51CTO技術棧公眾號

91高清免费观看| 99九九精品视频| 青青久在线视频免费观看| 爽好久久久欧美精品| 日韩综合视频在线观看| 性鲍视频在线观看| 黄视频免费在线看| 国产精品午夜电影| 97人人干人人| 日韩精品1区2区| 日韩精品不卡一区二区| 日韩免费性生活视频播放| 国产乱子伦农村叉叉叉| 午夜老司机在线观看| 成人一区二区三区在线观看| 国产成人精品一区二区| 91在线播放观看| 在线日韩一区| 精品噜噜噜噜久久久久久久久试看| aa在线免费观看| 成人短视频在线观看| 91在线丨porny丨国产| 成人黄色在线免费| 97久久久久久久| 国产精品v一区二区三区| 国产一区二区三区日韩欧美| 911亚洲精选| 日韩三区四区| 一本在线高清不卡dvd| 黄色激情在线视频| 日本暖暖在线视频| 国产午夜精品在线观看| 官网99热精品| 国产成人av免费看| 久久激五月天综合精品| 国产精品99久久久久久久久久久久 | 国产精品视频免费观看| 国产又粗又大又爽| 久久综合伊人| 欧美壮男野外gaytube| 久久久一二三区| 66视频精品| 色妞一区二区三区| 丁香激情五月少妇| 最新亚洲精品| 精品一区电影国产| 欧类av怡春院| 成人性生交大片免费看中文视频| 欧美一级免费大片| 国产高清999| 99re8精品视频在线观看| 欧美系列在线观看| 亚洲这里只有精品| 久久精品 人人爱| 欧美色图天堂网| 91香蕉视频污版| 影音成人av| 在线观看日韩毛片| 免费一区二区三区在线观看| 国产一区二区三区四区五区3d| 91成人国产精品| 999精品网站| 天然素人一区二区视频| 色婷婷精品久久二区二区蜜臀av| 欧美私人情侣网站| 日本成人三级电影| 欧美三日本三级三级在线播放| 亚洲综合色在线观看| 日韩免费在线电影| 日韩欧美一区在线| 亚洲图片欧美另类| 亚洲第一论坛sis| 亚洲欧洲日本专区| 日韩精品久久久久久久的张开腿让| 日韩中字在线| 蜜月aⅴ免费一区二区三区| 久久久.www| 亚洲欧洲日本mm| 欧美有码在线视频| www.亚洲激情| 国产乱码字幕精品高清av| 国产91aaa| 激情小视频在线| 国产精品久久久久aaaa樱花 | eeuss影院www在线观看| 国产精品久久久久久久久久久免费看| 400部精品国偷自产在线观看| 丝袜国产在线| 欧美日韩国产色| 亚洲欧美日韩一级| 91精品国产自产精品男人的天堂| 日韩av在线免播放器| 中文字幕精品亚洲| 黄色av一区| 国产精品日韩欧美| 午夜精品久久久久久久99热黄桃| 久久你懂得1024| 国产一级片91| 吉吉日韩欧美| 精品欧美一区二区久久| 欧美熟妇一区二区| 亚洲人metart人体| 欧美综合激情网| 国产内射老熟女aaaa∵| 26uuu精品一区二区在线观看| 亚洲欧美日韩不卡一区二区三区| 538视频在线| 欧美日韩国产区一| 亚洲观看黄色网| 亚州av乱码久久精品蜜桃| 欧美一区二区影院| 99热这里只有精品在线| 久久久久久久久久久久久久久99 | 黄色免费在线观看网站| 五月综合激情网| xxxx在线免费观看| 精品一级毛片| 97av在线视频免费播放| 国产美女自慰在线观看| 久久精品一区二区三区四区| 国产在线视频综合| 香蕉久久一区| 国产一区二区三区高清在线观看| 91久久国产视频| 国产成人免费高清| 亚洲日本精品国产第一区| 国产不卡网站| 日韩成人中文电影| 精品无码一区二区三区电影桃花 | 人妻激情偷乱频一区二区三区| 郴州新闻综合频道在线直播| 欧美在线中文字幕| 欧美一级特黄aaaaaa| 亚洲乱码日产精品bd| 中文字幕 91| 国产中文精品久高清在线不| 88xx成人精品| 理论片中文字幕| 一区二区三区毛片| 国产老头和老头xxxx×| 五月天综合网站| 成人欧美在线观看| 日本中文字幕在线2020| 欧美视频在线不卡| 国产一区二区三区视频播放| 奇米影视一区二区三区小说| 日本一区二区三区在线视频 | 成人午夜激情免费视频| 色大18成网站www在线观看| 欧美色男人天堂| 性爱在线免费视频| 久久99精品久久久久久动态图| 视频二区一区| 欧美视频免费看| 久久精品99久久久久久久久| 国产一区二区在线视频观看| 国产精品福利一区二区三区| 欧美一级视频在线| 久久久久久影院| 99re视频在线播放| av美女在线观看| 日韩精品免费在线| 中文字幕国产在线观看| 国产无遮挡一区二区三区毛片日本| 国产天堂在线播放| 欧美成人精品一区二区三区在线看| 国产在线精品自拍| 中文国产字幕在线观看| 精品国产免费久久| www.国产毛片| 中文成人av在线| 性生交大片免费看l| 精品动漫一区| 蜜桃视频在线观看成人| 日韩一级二级| 欧美成人在线免费| 手机福利在线| 欧美日韩一级黄| 免费在线观看日韩| 91麻豆免费在线观看| 999精品视频在线| 综合久久婷婷| 精品无人区一区二区三区| 国产私拍福利精品视频二区| 久久成人在线视频| 五月婷婷开心中文字幕| 欧美性一区二区| 免费一级肉体全黄毛片| 久久―日本道色综合久久| 亚洲涩涩在线观看| 一本一本久久| 男插女免费视频| 欧美1区二区| 国产又爽又黄的激情精品视频| 国内老司机av在线| 中日韩美女免费视频网址在线观看 | 国产日韩精品推荐| 精品九九久久| 国语自产精品视频在线看| www亚洲人| 亚洲成人中文字幕| 96日本xxxxxⅹxxx17| 亚洲高清久久久| 萌白酱视频在线| 99r精品视频| 巨乳女教师的诱惑| 日本视频在线一区| 毛片在线视频播放| 亚洲91中文字幕无线码三区| 久久一区免费| 国产精品白丝av嫩草影院| 国产精品亚洲综合天堂夜夜| 中文在线免费二区三区| 欧美黑人xxxⅹ高潮交| 五月香视频在线观看| 日韩精品久久久久久久玫瑰园| a在线观看视频| 在线视频国内自拍亚洲视频| 日韩免费不卡视频| 亚洲欧美激情在线| 免费成人深夜天涯网站| 久久综合九色综合97婷婷女人 | 久久亚洲中文字幕无码| 91av精品| 亚洲欧洲一区二区在线观看| 亚洲素人在线| 久久综合精品一区| 男人的天堂久久| 国产精品久久国产精品| 精品久久99| 国产精品影片在线观看| 亚洲伦理影院| 国产精品∨欧美精品v日韩精品| 国产传媒在线观看| 久久久久久亚洲精品不卡| 国产不卡在线| 久久精品视频亚洲| 久久精品视频免费看| 日韩有码视频在线| lutube成人福利在线观看| 亚洲视频自拍偷拍| 国产综合在线观看| 亚洲女成人图区| 欧美色18zzzzxxxxx| 日韩精品高清在线| 久久综合九色综合久| 亚洲丝袜在线视频| 国产女人在线观看| 中文字幕久热精品视频在线| 阿v免费在线观看| 中文字幕在线看视频国产欧美| 国产高清视频在线| 中文字幕自拍vr一区二区三区| 亚洲视频tv| 蜜臀久久99精品久久久久久宅男 | 超碰成人在线播放| 久久91精品国产91久久小草| 天天色天天综合网| 国产精品99久久久| 国产免费一区二区三区最新6| 99国产精品久| 日本xxxxxxxxx18| 国产精品美女久久久久aⅴ国产馆| 手机看片国产日韩| 亚洲免费电影在线| 激情五月婷婷小说| 欧美日韩在线免费观看| 无码一区二区三区在线观看| 欧美日韩午夜在线视频| 国产情侣一区二区| 精品粉嫩超白一线天av| 青青青草原在线| 色婷婷综合久久久久中文字幕1| 成年人黄视频在线观看| 欧美黑人狂野猛交老妇| 欧美激情护士| 国产精品久久久久aaaa九色| 嫩呦国产一区二区三区av| 国产精品日韩高清| 亚洲人成网www| 欧美爱爱视频网站| 亚洲高清二区| 黄色在线视频网| 国产91丝袜在线观看| 粉嫩av蜜桃av蜜臀av| 综合久久国产九一剧情麻豆| 免费一级全黄少妇性色生活片| 色综合天天综合网天天看片| 国产男男gay网站| 亚洲精品中文字幕女同| 黄色网在线看| 日本中文字幕不卡免费| 色呦呦网站在线观看| 欧美少妇xxx| www.蜜臀av| 亚洲欧美一区二区精品久久久| 日本天堂在线观看| 91精品国产91久久| 亚洲精品成人一区| 国新精品乱码一区二区三区18| 国产综合久久久| 日本免费a视频| 免费久久精品视频| 黄色av网址在线观看| 中文字幕一区二| 亚洲婷婷综合网| 欧美成人官网二区| 午夜激情在线观看| 秋霞成人午夜鲁丝一区二区三区| 精品中文在线| 水蜜桃一区二区| 亚洲欧美日本日韩| 中国男女全黄大片| 国产精品久久看| 天天操天天干天天摸| 亚洲国产精品推荐| av中文字幕在线观看| 国产精自产拍久久久久久| 亚洲欧美日本伦理| 99久久免费观看| 国产一区二三区| 五月天精品视频| 亚洲成a人片在线观看中文| 国产特级黄色片| 色妞欧美日韩在线| 成人做爰免费视频免费看| 欧美成熟毛茸茸复古| 日韩视频免费| 国产人妻黑人一区二区三区| 亚洲精品高清在线| 国产精品嫩草影院桃色| 自拍亚洲一区欧美另类| 亚洲爱爱视频| 日日噜噜噜噜夜夜爽亚洲精品| 久久精品动漫| 亚洲国产精品自拍视频| 亚洲成人免费视频| 性猛交xxxx乱大交孕妇印度| 久热精品视频在线免费观看 | 国产精品久久久久久网站| 思热99re视热频这里只精品| 男的插女的下面视频| 国产91精品欧美| 黄色一级免费视频| 日韩久久免费av| 久久亚洲导航| 国产69精品久久久久9999apgf| 亚洲先锋成人| 第一页在线视频| 亚洲一区二区av电影| 日韩永久免费视频| 国内精品中文字幕| 国产欧美一区二区三区米奇| 欧美一级视频免费看| www.日本不卡| aaaaaa毛片| 伊人久久久久久久久久久久久| 国产私拍福利精品视频二区| 亚洲一区二区高清视频| 国产一区二区三区高清播放| 午夜写真片福利电影网| 欧美精品一区二| 欧美男人天堂| 日韩国产欧美精品| 久草这里只有精品视频| 国产一区二区视频在线观看免费| 日韩欧美成人激情| h片视频在线观看| 免费看成人片| 美女视频黄免费的久久| 青春草免费视频| 日韩成人小视频| 黄色成人小视频| 国产资源第一页| 99久久伊人久久99| 色婷婷久久综合中文久久蜜桃av| 久久久国产一区二区三区| 国产精品xxxav免费视频| 91av在线免费播放| 成人免费一区二区三区在线观看| 亚洲欧美高清视频| 日韩av快播网址| 天天做天天爱天天综合网2021| 欧美xxxx日本和非洲| 色天使久久综合网天天| 日本不卡三区| 国产一区在线免费| 男人操女人的视频在线观看欧美| 亚洲av鲁丝一区二区三区| 精品亚洲一区二区三区在线播放| 日韩成人精品一区二区三区| 人人妻人人澡人人爽欧美一区双| 国产欧美一区二区精品忘忧草| 99热这里只有精品9| 日本韩国欧美精品大片卡二| 中文字幕免费一区二区三区| 久久久久久久久久久久久久久| 欧美va天堂va视频va在线| 台湾佬成人网| 国产资源在线免费观看|