您好,登錄后才能下訂單哦!
這篇文章主要講解了“TiDB怎么新建一張表”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“TiDB怎么新建一張表”吧!
TiDB是一個開源分布式數據庫,并使用Rust編寫的TiKV存儲數據,其中TiDB是一個SQL語法解析層,本文使用MockDB模擬本地存儲數據,從語法解析到實際存儲操作進行分析一張數據表是如何建出來的。
過程如下:
首先我們得有一個建表語句
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (Id_P) )
TiDB拿到一個SQL語句之后,首先需要使用Parser進行語法解析
上圖中的代碼為Parser的goyacc語法,最終SQL在Parser中走了一圈之后生成CreateTableStmt的結構,該結構具體的屬性如下圖所示:
在語法解析完成之后,就需要生一個抽象語法樹AST,TiDB使用火山模型向下鉆取生成語法樹。 !
如果語法樹生成的沒有問題,接下來就要build一個LogicPlan,當然在build之前我們先進行一些預檢查:
預檢查主要包括一些表名合法性檢查,列名合法性檢查,約束檢查,主鍵檢查等。
在確保AST檢查無誤之后,我們開始處理步驟3中生成的AST語法樹。其中在ddl_api.go中我們再做更詳細的檢查,并最終生成一個TableInfo的結構,這個結構中保存了所有表相關的信息。并提交一個類型為Type: model.ActionCreateTable
的Job。
在ddl_worker.go接收到步驟5中的Job之后真正開始作為一個原子操作處理保存TableInfo的任務。其中t.CreateTable(schemaID, tbInfo)
將會真正調用Hash接口的API將TableInfo
序列化之后存入后端存儲中。
在存儲完成之后調用job.FinishTableJob
通過前端建表語句已經執行完成。
感謝各位的閱讀,以上就是“TiDB怎么新建一張表”的內容了,經過本文的學習后,相信大家對TiDB怎么新建一張表這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。