本文章为官方文档译文,仅供个人日后复习使用,如有需求请移步至 https://perfetto.dev/docs/
数据表的继承规则
具体而言,表之间的继承规则如下( 感觉所谓"继承",更像是"子集"的概念 ):
- 表中的每一行都有一个 id,这个 id 对于表的层次结构来说是唯一的。
- 例如,每一个 track 都有一个 id ,它在所有轨道之间都是唯一的。(无论track的类型)
- 如果表C从表P继承,则C中的每一行也将在P中具有相同的id
- 这允许 id 作为行的“指针”; 可以对包含该行的任何表执行 id 查找
- 例如,每个 process_counter_track 行都将在 counter_track 中具有一个匹配行,该行本身将在轨道中具有匹配行( 个人理解:process_counter_track 是 counter_track 的子表 )
- 如果包含列 A 和 B 的表 C 继承自包含列 A 的 P,则 C 和 P 中的 A 将具有相同的数据
- 例如
- process_counter_track 有 name, unit, upid
- counter_track 有 name, unit
- track 有 name
- Process _ counter _ track 中的每一行对于 track 和 counter _ track 中具有相同 id 的 name 都是相同
- 类似地,process _ counter _ track 中的每一行对于 counter _ track 中具有相同 id 的 name 和 unit 都相同
- 例如
- 表中的每一行都有一个类型列。这指定了该行所属的更具体的表
- 这允许将 每行 动态强制转换为其最特定的类型
- 例如,如果 trace 中的一行实际上是 process_counter_track,那么它的类型列将是 “process_counter_track”
通过以上两个查询结果可以更加形象地理解表之间的继承关系。