TDSQL Boundless SHOW PROFILES

SHOW PROFILES 显示最近发送到服务器的语句的资源使用情况。SHOW PROFILE 用于查看指定语句各个执行阶段(Status)的耗时分布,便于性能分析与瓶颈定位。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

一、功能描述

启用 Profiling 功能后,TDSQL Boundless 会记录当前会话执行的语句信息,包括语句 ID、执行耗时和语句文本。

二、前提条件

执行该功能前,需在当前会话中启用 Profiling:

SET profiling = 1;

三、语法

SHOW PROFILES;SHOW PROFILE [type [, type] …] [FOR QUERY n] [LIMIT row_count [OFFSET offset]];type: { ALL | BLOCK IO | CONTEXT SWITCHES | CPU | IPC | MEMORY | PAGE FAULTS | SOURCE | SWAPS}

四、示例一:查看最近执行的语句列表

tdsql > SET profiling = 1;Query OK, 0 rows affected, 1 warning (0.00 sec)tdsql > SELECT COUNT(*) FROM test.t1;+———-+| COUNT(*) |+———-+| 1024 |+———-+1 row in set (0.02 sec)tdsql > SHOW PROFILES;+———-+————+——————————+| Query_ID | Duration | Query |+———-+————+——————————+| 1 | 0.02158725 | SELECT COUNT(*) FROM test.t1 |+———-+————+——————————+1 row in set (0.00 sec)

以上返回结果中的字段描述如下:

·Query_ID:语句在当前会话中的编号。

·Duration:语句执行总耗时,单位为秒。

·Query:语句文本。

五、示例二:查看指定语句各阶段耗时

tdsql > SHOW PROFILE FOR QUERY 1;+———————–+———-+| Status | Duration |+———————–+———-+| starting | 0.000089 || Executing hook on txn | 0.000005 || starting | 0.000010 || checking permissions | 0.000007 || Opening tables | 0.000038 || init | 0.000034 || System lock | 0.000009 || Wait gts rsp | 0.001235 || Searching range cache | 0.018652 || optimizing | 0.000015 || statistics | 0.000142 || preparing | 0.000023 || executing | 0.001120 || end | 0.000005 || query end | 0.000009 || closing tables | 0.000012 || freeing items | 0.000056 || cleaning up | 0.000017 |+———————–+———-+18 rows in set (0.00 sec)

以上返回结果中的字段描述如下:

·Status:语句执行所处的阶段名称。

·Duration:该阶段消耗的时间,单位为秒。

部分关键阶段说明:

·Wait gts rsp:等待 GTS(全局时间戳)响应的耗时。

·Searching range cache:查找 range cache 的耗时。该状态由 TDSQL Boundless 新增,用于将 range cache 查找耗时从 Wait gts rsp 中独立出来,便于精准定位耗时来源。

·System lock:等待系统锁的耗时。

·Opening tables:打开表的耗时。

六、示例三:查看指定语句的 CPU 与 BLOCK IO 信息

tdsql > SHOW PROFILE CPU, BLOCK IO FOR QUERY 1;+———————–+———-+———-+————+————–+—————+| Status | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |+———————–+———-+———-+————+————–+—————+| starting | 0.000089 | 0.000076 | 0.000012 | 0 | 0 || Wait gts rsp | 0.001235 | 0.000080 | 0.000020 | 0 | 0 || Searching range cache | 0.018652 | 0.015230 | 0.003410 | 16 | 0 || executing | 0.001120 | 0.001100 | 0.000018 | 0 | 0 || cleaning up | 0.000017 | 0.000015 | 0.000002 | 0 | 0 |+———————–+———-+———-+————+————–+—————+

以上返回结果中新增字段描述如下:

·CPU_user:用户态 CPU 耗时,单位为秒。

·CPU_system:内核态 CPU 耗时,单位为秒。

·Block_ops_in:块设备读操作次数。

·Block_ops_out:块设备写操作次数。

七、参数说明

SHOW PROFILE 支持的 type 选项:

·ALL:显示所有信息。

·BLOCK IO:显示块设备输入和输出操作次数。

·CONTEXT SWITCHES:显示自愿与非自愿的上下文切换次数。

·CPU:显示用户态与内核态 CPU 耗时。

·IPC:显示发送和接收的消息数量。

·MEMORY:暂未实现。

·PAGE FAULTS:显示主要和次要的缺页次数。

·SOURCE:显示函数所在的源文件名、函数名及行号。

·SWAPS:显示 swap 次数。

八、注意事项

·SHOW PROFILES 与 SHOW PROFILE 仅显示当前会话执行的语句,会话断开后历史记录会丢失。

·通过会话变量 profiling_history_size 控制保留的历史语句数量,默认为15,最大为100。

·该功能在 MySQL 产品文档中已被标记为 Deprecated,建议结合 Performance Schema 使用以获得更全面的性能分析能力。

赞 (0)
上一篇 4天前
下一篇 4天前