viewTraceInfo

New in version 2.00.8.

语法

viewTraceInfo(traceId, [isTreeView=true])

参数

traceId 字符串,表示记录 SQL Trace 信息的 id。通过函数 getTraces 获取。

isTreeView 布尔值,表示是否以树状结构显示跟踪信息,默认为 true。

详情

展示 traceId 对应脚本的跟踪信息。返回一个表,包含以下几列:

  • tree (isTreeView = true):以树状结构显示执行流程,每个节点可视为一个操作的 span。| name (isTreeView = false):直接显示每个 span 的操作名。

  • startTime:脚本开始执行的时间戳,单位为纳秒。

  • timeElapsed:脚本执行总耗时,单位为微秒。

  • reference:该列显示了子 span 和父 span 的关系。有三种类型:

    • Root:根节点,为首次接收请求的阶段。

    • ChildOf:父 span 依赖于子 span 返回的结果。表示该 span 是被同步调用的。

    • FollowsFrom:父 span 并不依赖子 span 的的返回结果。表示是该 span 是被异步调用的(如:进入队列或网络请求等操作)。

  • node:该 span 所在执行节点的别名。

name/tree 中各 span 的操作及其含义:

操作名

含义

Worker::run

服务器获取请求后将请求送入队列,由 worker 线程进行计算工作。

Tokenizer::tokenize

对请求内的脚本做词法分析,得到词素流便于后续语法解析。

Parser::parse

对请求内的脚本做语法解析,得到可执行的语句。

Statement::execute

执行语句,指代一行脚本。

SQLQueryImp::getReference

对 SQL 查询求值,即执行 SQL 查询。

SQLQueryImp::partitionedCall

进行一次分区查询,该查询任务会分解并发送给其他 datanode 来执行查询。常见于分布式查询。

SQLQueryImp::simpleCall

简单的查询语句,一般不包含 group by, context by, cgroup by 等操作。常见于内存表查询。

SQLQueryImp::basicCall

从存储引擎中读取数据。

StaticStageExecutor::execute[probing]

指分布式查询执行前的探测过程(probing)。系统会将客户端发起的查询任务拆分成多个子任务,部分在本地执行,部分发送到远端节点。当发送给远端的子任务过多时,系统会分批进行发送。

[probing]阶段,系统会先发送一个子任务,根据其返回结果占用的内存大小估算所有子任务结果占用的内存大小,若超出 memLimitOfQueryResult,则抛出异常。

若小于 memLimitOfQueryResult,则根据 memLimitOfTaskGroupResult 和单个子任务返回结果的大小计算每批包含的子任务数,再根据子任务总数算出拆分的批次。

StaticStageExecutor::execute[remote]

执行远程任务的过程,包括了网络调用和远端执行。

StaticStageExecutor::execute[local]

在本地工作线程执行任务的过程。

StaticStageExecutor::execute[localExecutor]

在本节点 local executor 执行任务的过程,包含了进出队列以及执行任务的过程。

GOContainer::addRemoteTask

发送一个远程任务。注意这里只包含发送任务过程,不包括远端执行和响应过程。

LocalExecutor::run

单个 local executor 的执行过程,与 Worker::run 类似。

TableJoiner::getReference

进行一次表连接。

GroupByEngine::getReference

对一次 group by 操作进行求值。

ContextByEngine::getReference

对一次 context by 操作进行求值。

PivotByEngine::getReference

对一次 pivot by 操作进行求值。

例子

$ viewTraceInfo("c87ffe02-0c93-1db0-8e4f-b5416cce0207", true);

tree

startTime

timeElapsed

reference

node

receiving request

2022.09.16T07:32:52.623285503

41

Root

server11352

└── Worker::run

2022.09.16T07:32:52.623691618

24398

FollowsFrom

server11352

├── Tokenizer::tokenize

2022.09.16T07:32:52.623849180

209

ChildOf

server11352

├── Parser::parse

2022.09.16T07:32:52.624090363

478

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.624599228

1387

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.625718380

6

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.625756761

114

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.625781752

87

ChildOf

server11352

│ └── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.625808326

104

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.626015033

9461

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.626538703

4

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.626567940

115

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.626596674

85

ChildOf

server11352

│ ├── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.626621946

4089

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.630774139

7

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.630801046

96

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.630823932

67

ChildOf

server11352

│ ├── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.630847597

690

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.635124144

9

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.635152711

251

ChildOf

server11352

│ │ └── LocalExecutor::run

2022.09.16T07:32:52.635328967

48

FollowsFrom

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.635172504

223

ChildOf

server11352

│ └── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.635192260

228

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.635503439

17

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.635541133

188

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.635761687

96

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.635883399

54

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.635962473

53

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.636041994

245

ChildOf

server11352

│ └── SQLQueryImp::getReference

2022.09.16T07:32:52.636074115

188

ChildOf

server11352

│ └── SQLQueryImp::simpleCall

2022.09.16T07:32:52.636161408

83

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.636312743

2974

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.636707659

7

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.636766689

112

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.636799962

73

ChildOf

server11352

│ └── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.636824683

987

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.639320281

2922

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.639642957

7

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.639669763

102

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.639694611

71

ChildOf

server11352

│ ├── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.639718803

588

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.642044718

5

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.642059997

47

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.642069963

33

ChildOf

server11352

│ └── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.642079697

42

ChildOf

server11352

├── Statement::execute

2022.09.16T07:32:52.642256736

5650

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.642795248

4

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.642810900

55

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.642820428

42

ChildOf

server11352

│ └── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.642838446

2682

ChildOf

server11352

│ ├── StaticStageExecutor::execute[probing]

2022.09.16T07:32:52.643259902

4

ChildOf

server11352

│ ├── StaticStageExecutor::execute[localExecutor]

2022.09.16T07:32:52.643273979

54

ChildOf

server11352

│ ├── StaticStageExecutor::execute[remote]

2022.09.16T07:32:52.643283993

39

ChildOf

server11352

│ └── StaticStageExecutor::execute[local]

2022.09.16T07:32:52.643294465

107

ChildOf

server11352

└── Statement::execute

2022.09.16T07:32:52.647935505

105

ChildOf

server11352