Query Insights 提供:
成功执行查询的运行时
查询的运行时估计
EXPLAIN
。使用取消的查询的运行时估计
Ctrl+C
。由于内存不足错误而失败的查询的运行时估计。
运行时数据可用于查询优化、故障排除或估算在 HeatWave 上运行特定查询或工作负载的成本。
CALL sys.heatwave_advisor ([options]);
options: {
JSON_OBJECT("key","value"[,"key","value"] ...)
"key","value":
["output",{"normal"|"silent"|"help"}]
["target_schema",JSON_ARRAY({"schema_name"[,"schema_name"]}]
["exclude_query",JSON_ARRAY("query_id"[,"query_id"] ...)]
["query_session_id",JSON_ARRAY("query_session_id"[,"query_session_id"] ...)]
["query_insights",{TRUE|FALSE}]
}
有关语法示例,请参阅 第 2.7.3.4 节,“Advisor 示例”。
JSON
Advisor 选项被指定为-object 格式
的键值对
。选项包括:
-
output
:定义 Advisor 如何生成输出。允许的值为:normal
:默认。生成发送到 表stdout
和 发送到heatwave_advisor_report
表的汇总输出。(请参阅 第 2.7.3.5 节“顾问报告表”。)silent
:仅将输出发送到heatwave_advisor_report
表。(请参阅 第 2.7.3.5 节,“顾问报告表”。)"silent"
如果不需要人类可读的输出,则输出类型很有用;例如,当脚本使用输出时。help
:显示 Advisor 命令行帮助。请参阅 第 2.7.3.4 节,“顾问示例”。
target_schema
:定义一个或多个模式。该列表以JSON
-array 格式指定。如果未指定目标架构,则会考虑 HeatWave 中的所有架构。exclude_query
:定义要排除的查询的 ID。要识别查询 ID,请查询performance_schema.rpd_query_stats
表。有关查询示例,请参阅 第 2.7.3.4 节,“顾问示例”。query_session_id
:定义会话 ID,用于按会话 ID 过滤查询。要识别会话 ID,请查询该performance_schema.rpd_query_stats
表。有关查询示例,请参阅 第 2.7.3.4 节,“顾问示例”。query_insights
:为成功执行的查询提供运行时,为EXPLAIN
查询、使用 取消的Ctrl+C
查询以及由于内存不足错误而失败的查询提供运行时估计。默认设置为FALSE
。
要让 Query Insights 提供运行时数据,查询历史记录必须可用。Query Insights 提供最多 1000 个查询的运行时数据,这是 HeatWave 查询历史限制。查看当前的HeatWave查询历史,查询
performance_schema.rpd_query_stats
表:
mysql> SELECT query_id, LEFT(query_text,160) FROM performance_schema.rpd_query_stats;
以下示例展示了如何使用 Query Insights 检索整个查询历史记录的运行时数据。在此示例中,查询历史记录中有三个查询:成功执行的查询、因内存不足错误而失败的查询以及使用 取消的查询
Ctrl+C
。有关 Query Insights 数据的说明,请参阅
Query Insights Data。
mysql> CALL sys.heatwave_advisor(JSON_OBJECT("query_insights", TRUE));
+-------------------------------+
| INITIALIZING HEATWAVE ADVISOR |
+-------------------------------+
| Version: 1.12 |
| |
| Output Mode: normal |
| Excluded Queries: 0 |
| Target Schemas: All |
| |
+-------------------------------+
6 rows in set (0.01 sec)
+---------------------------------------------------------+
| ANALYZING LOADED DATA |
+---------------------------------------------------------+
| Total 8 tables loaded in HeatWave for 1 schemas |
| Tables excluded by user: 0 (within target schemas) |
| |
| SCHEMA TABLES COLUMNS |
| NAME LOADED LOADED |
| ------ ------ ------ |
| `tpch128` 8 61 |
| |
+---------------------------------------------------------+
8 rows in set (0.02 sec)
+-------------------------------------------------------------------------------------+
| QUERY INSIGHTS |
+-------------------------------------------------------------------------------------+
| Queries executed on Heatwave: 4 |
| Session IDs (as filter): None |
| |
| QUERY-ID SESSION-ID QUERY-STRING EXEC-RUNTIME COMMENT |
| -------- ---------- ------------ ------------ ------- |
| 1 32 SELECT COUNT(*) |
| FROM tpch128.LINEITEM 0.628 |
| 2 32 SELECT COUNT(*) |
| FROM tpch128.ORDERS 0.114 (est.) Explain. |
| 3 32 SELECT COUNT(*) |
| FROM tpch128.ORDERS, |
| tpch128.LINEITEM 5.207 (est.) Out of memory |
| error during |
| query execution |
| in RAPID. |
| 4 32 SELECT COUNT(*) |
| FROM tpch128.SUPPLIER, |
| tpch128.LINEITEM 3.478 (est.) Operation was |
| interrupted by |
| the user. |
| TOTAL ESTIMATED: 3 EXEC-RUNTIME: 8.798 sec |
| TOTAL EXECUTED: 1 EXEC-RUNTIME: 0.628 sec |
| |
| |
| Retrieve detailed query statistics using the query below: |
| SELECT log FROM sys.heatwave_advisor_report WHERE stage = "QUERY_INSIGHTS" AND |
| type = "info"; |
| |
+-------------------------------------------------------------------------------------+
mysql> SELECT log FROM sys.heatwave_advisor_report WHERE stage = "QUERY_INSIGHTS"
AND type = "info";
+--------------------------------------------------------------------------------------+
| log |
+--------------------------------------------------------------------------------------+
| {"comment": "", "query_id": 1, "query_text": "SELECT COUNT(*) FROM tpch128.LINEITEM",|
| "session_id": 32, "runtime_executed_ms": 627.6099681854248, |
| "runtime_estimated_ms": 454.398817} |
| |
| {"comment": "Explain.", "query_id": 2, "query_text": "SELECT COUNT(*) |
| FROM tpch128.ORDERS", "session_id": 32, "runtime_executed_ms": null, |
| "runtime_estimated_ms": 113.592768} |
| |
| {"comment": "Out of memory error during query execution in RAPID.", "query_id": 3, |
| "query_text": "SELECT COUNT(*) FROM tpch128.ORDERS, tpch128.LINEITEM", |
| "session_id": 32, "runtime_executed_ms": null, "runtime_estimated_ms": 5206.80822} |
| |
| {"comment": "Operation was interrupted by the user.", "query_id": 4, |
| "query_text": "SELECT COUNT(*) FROM tpch128.SUPPLIER, tpch128.LINEITEM", |
| "session_id": 32, "runtime_executed_ms": null, "runtime_estimated_ms": 3477.720953} |
+--------------------------------------------------------------------------------------+
4 rows in set (0.00 sec)
有关按模式和会话 ID 过滤结果的 Query InsightsCALL
语句示例,请参阅
第 2.7.3.4 节,“顾问示例”。
Query Insights 提供以下数据:
-
QUERY-ID
查询 ID。
-
SESSION-ID
发出查询的会话 ID。
-
QUERY-STRING
查询字符串。
EXPLAIN
,如果指定,则不会显示在查询字符串中。 -
EXEC-RUNTIME
以秒为单位的查询执行运行时间。运行时间估计与实际运行时间的区别在于运行时间旁边出现以下文本:
(est.)
。显示成功执行的查询的实际运行时间。EXPLAIN
显示查询、被取消的Ctrl+C
查询以及因内存不足错误而失败的 查询的运行时估计 。 -
COMMENT
与查询关联的评论。评论可能包括:
Explain
: 查询是用 运行的EXPLAIN
。Operation was interrupted by the user
:查询已成功卸载到 HeatWave,但被 Ctrl+C 组合键中断。Out of memory error during query execution in RAPID
: 查询已成功卸载到 HeatWave,但由于内存不足错误而失败。
-
TOTAL-ESTIMATED
和EXEC-RUNTIME
具有运行时估计和总执行运行时间(估计)的查询总数。
-
TOTAL-EXECUTED
和EXEC-RUNTIME
成功执行的查询总数和总执行运行时间(实际)。
-
Retrieve detailed statistics using the query below
sys.heatwave_advisor_report
该查询从表中 检索详细的查询统计信息 。有关详细统计信息的示例,请参阅 运行查询见解。
Query Insights 数据可以以机器可读格式检索,以便在脚本中使用;请参阅
第 2.7.3.4 节,“顾问示例”。Query Insights 数据也可以JSON
通过查询表以格式或 SQL 表格式
检索sys.heatwave_advisor_report
。请参阅
第 2.7.3.5 节,“顾问报告表”。