diff --git a/docs/zh/21-tdinternal/01-arch.md b/docs/zh/21-tdinternal/01-arch.md index 0a90781c0537451f3b3172299ad69bcfda16cc92..a910c584d6ba47844d51e45e5010581075a72fb6 100644 --- a/docs/zh/21-tdinternal/01-arch.md +++ b/docs/zh/21-tdinternal/01-arch.md @@ -278,12 +278,14 @@ TDengine 对每个数据采集点单独建表,但在实际应用中经常需
图 5 多表聚合查询原理图
-1. 应用将一个查询条件发往系统; -2. taosc 将超级表的名字发往 meta node(管理节点); -3. 管理节点将超级表所拥有的 vnode 列表发回 taosc; -4. taosc 将计算的请求连同标签过滤条件发往这些 vnode 对应的多个数据节点; -5. 每个 vnode 先在内存里查找出自己节点里符合标签过滤条件的表的集合,然后扫描存储的时序数据,完成相应的聚合计算,将结果返回给 taosc; -6. taosc 将多个数据节点返回的结果做最后的聚合,将其返回给应用。 +1. 客户端从 mnode 获取库和表的元数据信息; +2. mnode 返回请求的元数据信息; +3. 客户端向超级表所属的每个 vnode 发送查询请求; +4. vnode 启动本地查询,在获得查询结果后返回查询响应; +5. 客户端向聚合节点 (在本例中为 qnode)发送查询请求; +6. qnode 向每个 vnode 节点发送数据请求消息来拉取数据; +7. vnode 返回本节点的查询计算结果; +8. qnode 完成多节点数据聚合后将最终查询结果返回给客户端; 由于 TDengine 在 vnode 内将标签数据与时序数据分离存储,通过在内存里过滤标签数据,先找到需要参与聚合操作的表的集合,将需要扫描的数据集大幅减少,大幅提升聚合计算速度。同时,由于数据分布在多个 vnode/dnode,聚合计算操作在多个 vnode 里并发进行,又进一步提升了聚合的速度。 对普通表的聚合函数以及绝大部分操作都适用于超级表,语法完全一样,细节请看 TAOS SQL。 diff --git a/docs/zh/21-tdinternal/multi_tables.webp b/docs/zh/21-tdinternal/multi_tables.webp index 8f649e34a3a62d1b11b4403b2e743ff6b5e47be2..481020a5f718e2ad3f1265b2785ddff8ad9ee292 100644 Binary files a/docs/zh/21-tdinternal/multi_tables.webp and b/docs/zh/21-tdinternal/multi_tables.webp differ