pctp学习问题20210302

复习本月底pctp考试,看了两天视频,有以下几个问题想确认一下
(1)tidb server存储schema信息如何理解,schema属于元数据,不是应该统一存在pd中吗
(2)表数据key格式为[tablemark][tableid]_[rowmark][rowid],培训视频中的ppt写的下面这句话如何理解,理解成存在int类型的主键时,key中使用主键代替rowid是否正确


(3)在讲数据写入时,这个两阶段提交如何理解,感觉与分布式事务的两阶段提交协调者参与者功能不一样,是否可以理解为写入操作先同步写主键region,然后异步写索引region

(1) 这里的表述有点不太清楚,我估计是说可以通过 tidb-server 从一些 MySQL,INFORMATION_SCHEMA 等系统库里查看一些 schema 信息;
(2)tidb 里每行数据都有一个隐式的 rowid ,当主键为整数类型时,tidb 会将主键值直接作为 rowid,即表的主键为整数类型时,主键值 = rowid
(3)首先表数据和索引数据都是以 key-value 键值对形式写入到 region 中,这里两阶段提交不是以主键和索引来划分的, 两阶段提交的含义:
a) Prewrite 阶段:对事务修改的每个 Key 检测冲突并写入 lock 防止其他事务修改。对于每个事务,TiDB 会从涉及到改动的所有 Key 中选中一个作为当前事务的 Primary Key,事务提交或回滚都需要先修改 Primary Key,以它的提交与否作为整个事务执行结果的标识。
b) Commit 阶段:Prewrite 全部成功后,先同步提交 Primary Key,成功后事务提交成功,其他 Secondary Keys 会异步提交。

上面这块内容建议在看视频时,同时结合官方文档和一些其他资料同时学习,加深下原理理解。

1赞

谢谢,没搞过代码也就没看源码,有些东西不好理解

:handshake: