第3章 TiDB的计算(二)


元信息管理

上节介绍了表中的数据和索引如何映射为(Key,Value)键值对,本节介绍一下元信息的存储。TiDB中每个Database和Table都有元信息,也就是其定义以及各项属性,这些信息也需要持久化,TiDB将这些信息也存储在了TiKV中。

每个Database/Table都被分配了一个唯一的ID,这个ID作为唯一标识,并且在编码为Key-Value时,这个ID都会编码到Key中,再加上m_前缀。这样可以构造出一个Key,Value中存储的是序列化后的元信息。

除此之外,TiDB还用一个专门的(Key,Value)键值对存储当前所有表结构信息的最新版本号。这个键值对是全局的,每次DDL操作的状态改变时其版本号都会加1。目前,TiDB把这个键值对存放在pd-server内置的etcd中,其Key为"/tidb/ddl/global_schema_version",Value是类型为int64的版本号值。TiDB使用Google F1的Online Schema变更算法,有一个后台线程在不断的检查etcd中存储的表结构信息的版本号是否发生变化,并且保证在一定时间内一定能够获取版本的变化。