最近一個日常實例在做DDL過程中,直接把數(shù)據(jù)庫給干趴下了,問題還是比較嚴(yán)重的,于是趕緊排查問題,擼了下crash堆棧和alert日志,發(fā)現(xiàn)是在去除唯一約束的場景下,MyRocks存在一個嚴(yán)重的bug,于是緊急向官方提了一個bug。其實問題比較隱蔽,因為直接一條DDL語句,數(shù)據(jù)庫是不會掛了,而是在特定情況下,并且對同一個索引操作多次才會發(fā)生,因此排查問題也費(fèi)了一些時間,具體bug排查和復(fù)現(xiàn)過程不在此展開,有興趣的童鞋可以直接看bug鏈接:https://github.com/facebook/mysql-5.6/issues/602。借著排查問題的機(jī)會,我梳理了MyRocks DDL的工作流程,下文主要包括3方面內(nèi)容:MyRocks數(shù)據(jù)字典,DDL操作除了修改數(shù)據(jù)本身,很重要的一個工作是維護(hù)數(shù)據(jù)字典,第二部分是MyRocks DDL的流程,主要圍繞增加/刪除索引的場景展開,最后一部分是分析DDL異常處理邏輯。

數(shù)據(jù)字典
    所謂數(shù)據(jù)字典,就是存儲引擎元數(shù)據(jù)的地方。數(shù)據(jù)字典可以從兩個維度來看,從用戶角度來看,數(shù)據(jù)字典就是information_schema表中的
RocksDB相關(guān)的表,主要包括ROCKSDB_DDL,ROCKSDB_INDEX_FILE_MAP等。而從RockDB內(nèi)部實現(xiàn)角度來看,所有元數(shù)據(jù)都以KV對的方式存儲在system column family中。我們看到的information_schema中表的信息,其實都是通過system column family中的元數(shù)據(jù)構(gòu)造出來的,同時在mysqld啟動時,也會構(gòu)造一份元數(shù)據(jù)存儲在內(nèi)存中,方便快速檢索查詢。下面我會列出RocksDB數(shù)據(jù)字典的幾種類型,并列出每種類型KV對的形式。
// Data dictionary types

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言:
 
  • <strong id="nmzew"></strong>
      <blockquote id="nmzew"></blockquote>