查看 SQL 执行记录¶
按条件查看当前工作区内的 SQL 执行记录,可用于排查执行失败、执行缓慢或特定数据库中的 SQL。默认只查看当前身份执行的记录;具备相应权限时,可以查看工作区范围的记录。
POST https://api.moi.matrixorigin.cn/v5/query/history
调用前准备¶
请求体¶
curl -X POST "https://api.moi.matrixorigin.cn/v5/query/history" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
-d '{
"status": "Success",
"databases": ["analytics"],
"start": "2026-08-18T00:00:00Z",
"end": "2026-08-18T01:00:00Z",
"limit": 20,
"order_by": ["request_at"],
"order": "DESC"
}'
参数 |
类型 |
是否必填 |
说明 |
|---|---|---|---|
scope |
string |
否 |
查看当前身份或当前工作区的记录。 |
status |
string |
否 |
按执行状态筛选。 |
user |
array of string |
否 |
按执行用户筛选。 |
databases |
array of string |
否 |
按数据库名称筛选。 |
statement |
string |
否 |
按 SQL 文本进行包含匹配。 |
query_type |
array of string |
否 |
按语句类别筛选:DDL、DML、DQL、DCL、TCL 或 Other。 |
duration |
unsigned integer |
否 |
最短执行时长,单位为纳秒。 |
start |
string |
否 |
查询开始时间,例如 2026-08-18T00:00:00Z。 |
end |
string |
否 |
查询结束时间,例如 2026-08-18T01:00:00Z。 |
statement_id |
string |
否 |
按语句 ID 筛选。 |
transaction_id |
string |
否 |
按事务 ID 精确筛选。 |
session_id |
string |
否 |
按会话 ID 筛选。 |
selected_field |
array of string |
否 |
指定需要返回的字段。 |
sql_source_type |
array of string |
否 |
按 SQL 来源筛选。 |
offset |
unsigned integer |
否 |
从零开始的偏移量。默认值为 0。 |
limit |
unsigned integer |
否 |
单次返回的最大记录数。 |
order_by |
array of string |
否 |
排序字段。 |
order |
string |
否 |
排序方向。 |
cu |
unsigned integer |
否 |
容量使用量阈值。 |
查看范围
scope 值 |
可查看的记录 |
权限条件 |
|---|---|---|
self |
当前身份的记录。 |
默认范围。 |
workspace |
工作区范围的记录。 |
需要工作区审计读取权限。 |
查询时间和 ID
时间需填写完整的日期、时间和时区。开始和结束时间都未填写时,默认查询请求前 5 分钟内的记录;可以只填写其中一个时间作为查询边界。
输入完整语句 ID 或会话 ID 时精确匹配;输入合法片段时,匹配包含该片段的记录。ID 片段只能包含字母、数字和连字符。
选择返回内容
未指定返回字段时,服务返回默认字段;无论是否指定,结果都会包含请求时间。未指定 SQL 来源时,服务只返回用户 SQL 和外部 SQL。每页条数省略或为 0 时使用 10,最大为 1000;容量使用量筛选仅在当前部署支持且阈值大于 0 时生效。
可排序字段
省略 order_by 时,服务按请求时间降序排列。order 为 DESC 时降序,其他值按升序处理。
字段 |
含义 |
|---|---|
request_at |
请求时间。 |
response_at |
响应时间。 |
duration |
执行时长。 |
rows_read |
读取行数。 |
bytes_scan |
扫描字节数。 |
cu |
容量使用量。 |
读取下一页
读取下一页时,将 offset 增加本次实际返回的条数,并保留原筛选条件。例如,第一页 offset 为 0、limit 为 20 时,下一页请求为:
curl -X POST "https://api.moi.matrixorigin.cn/v5/query/history" \
-H "X-API-Key: $AI_STUDIO_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H 'Content-Type: application/json' \
-d '{
"status": "Success",
"databases": ["analytics"],
"start": "2026-08-18T00:00:00Z",
"end": "2026-08-18T01:00:00Z",
"offset": 20,
"limit": 20,
"order_by": ["request_at"],
"order": "DESC"
}'
累计读取数量达到总数,或本次没有记录时停止翻页。
成功响应¶
成功时返回 SQL 执行记录。data.query_list 为空表示在本次筛选范围内没有可返回的记录;这不表示 SQL 执行失败。
{
"code": "OK",
"msg": "OK",
"data": {
"total": 1,
"offset": 0,
"limit": 20,
"query_list": [
{
"statement_id": "5c6f22fb-ef0e-4f46-b06f-c31e1a7afb48",
"database": "analytics",
"statement": "SELECT * FROM orders",
"request_at": "2026-08-18T00:30:00Z",
"response_at": "2026-08-18T00:30:01Z",
"duration": 1000,
"status": "Success",
"query_type": "DQL",
"result_count": 10
}
]
}
}
字段 |
类型 |
说明 |
|---|---|---|
code |
string |
成功时为 OK。 |
msg |
string |
成功时为 OK。 |
data.total |
integer |
符合筛选条件的记录总数。 |
data.offset |
unsigned integer |
本次响应使用的偏移量。 |
data.limit |
unsigned integer |
本次响应实际使用的单页上限。 |
data.query_list |
array |
SQL 执行记录列表。 |
data.query_list[].statement_id |
string |
语句 ID。 |
data.query_list[].transaction_id |
string |
事务 ID。 |
data.query_list[].session_id |
string |
会话 ID。 |
data.query_list[].account |
string |
执行所用账户。 |
data.query_list[].user |
string |
执行用户。 |
data.query_list[].host |
string |
执行主机。 |
data.query_list[].database |
string |
执行时使用的数据库。 |
data.query_list[].statement |
string |
SQL 语句文本。 |
data.query_list[].statement_tag |
string |
语句标签。 |
data.query_list[].statement_fingerprint |
string |
语句指纹。 |
data.query_list[].node_uuid |
string |
执行节点 UUID。 |
data.query_list[].node_type |
string |
执行节点类型。 |
data.query_list[].request_at |
string |
开始执行时间。 |
data.query_list[].response_at |
string |
结束执行时间。 |
data.query_list[].duration |
unsigned integer |
执行时长,单位为纳秒。 |
data.query_list[].status |
string |
执行状态。 |
data.query_list[].error_code |
string |
错误代码。 |
data.query_list[].error |
string |
错误信息。 |
data.query_list[].exec_plan |
string |
已保存的执行计划。 |
data.query_list[].rows_read |
unsigned integer |
读取行数。 |
data.query_list[].bytes_scan |
unsigned integer |
扫描字节数。 |
data.query_list[].statement_type |
string |
语句类型。 |
data.query_list[].query_type |
string |
语句类别。 |
data.query_list[].role_id |
unsigned integer |
执行角色 ID。 |
data.query_list[].sql_source_type |
string |
SQL 来源类型。 |
data.query_list[].result_count |
integer |
结果行数。 |
data.query_list[].cu |
number |
容量使用量。 |
data.query_list[].connection_id |
integer |
数据库连接 ID。 |
错误响应¶
{
"code": "ErrParamInvalid",
"msg": "请求参数无效",
"data": null
}
字段 |
类型 |
说明 |
|---|---|---|
code |
string |
错误代码。 |
msg |
string |
错误信息。 |
data |
null |
— |
后续操作¶
选择 SQL 执行记录¶
如需继续排查,在结果中选择一条 SQL 执行记录,并记下其语句 ID 和执行时间。随后可查看 SQL 执行详情或查看 SQL 执行计划。
如需重新执行某条 SQL,请从所选记录中取得 SQL 文本,并确认目标数据库和当前身份的权限后,使用执行 SQL。