从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要讲解了“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怎么新建一张表这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图