跳转至

SQL 查询

直接对 trace 数据执行 PerfettoSQL 查询。

概述

当内置分析命令无法满足特定需求时,你可以直接运行 PerfettoSQL 查询。这让你可以完全访问 trace 数据模型。

命令

query sql

执行 PerfettoSQL 查询。

# 内联查询
perfetto-cli -t trace.perfetto-trace query sql --query "SELECT * FROM slice LIMIT 10"

# 从文件加载查询
perfetto-cli -t trace.perfetto-trace query sql --file query.sql

选项:

选项 说明
--query <sql> SQL 查询字符串
--file <path> SQL 文件路径

query find-slices

按名称模式搜索切片。

perfetto-cli -t trace.perfetto-trace query find-slices --pattern "Choreographer"

选项:

选项 说明 默认值
--pattern <text> 搜索模式 必填
--match-type <type> 匹配方式:contains / exact / glob contains

query slice-info

获取特定切片的详细信息。

perfetto-cli -t trace.perfetto-trace query slice-info --slice-id 12345

常用查询

-- 列出 trace 中所有进程
SELECT pid, name FROM process ORDER BY name;

-- 查找耗时长的切片
SELECT name, dur/1e6 as dur_ms FROM slice WHERE dur > 16000000 ORDER BY dur DESC LIMIT 20;

-- 按名称统计切片数量
SELECT name, COUNT(*) as cnt FROM slice GROUP BY name ORDER BY cnt DESC LIMIT 20;

提示

  • 使用 find-slices 发现切片名称,然后再写复杂查询
  • PerfettoSQL 文档:perfetto.dev/docs/analysis/sql-tables
  • 配合 --file 使用版本控制的 .sql 文件,实现可重复的分析