-
Notifications
You must be signed in to change notification settings - Fork 111
ps_is_thread_instrumented()
xiaoboluo768 edited this page Jun 9, 2020
·
2 revisions
-
在threads表中检查指定线程是否启用了监控功能,给定参数值对应threads表中的PROCESSLIST_ID列或SHOW PROCESSLIST输出的Id列值
- 如果给定连接ID值在threads表中未查询到,则返回UNKNOWN值,如果给定ID值为NULL则返回NULL
-
参数:
- in_connection_id BIGINT UNSIGNED:连接ID。对应performance_schema.threads表中的PROCESSLIST_ID列值或SHOW PROCESSLIST输出的Id列值
-
返回值:一个ENUM('YES','NO','UNKNOWN')值
-
定义语句
DROP FUNCTION IF EXISTS ps_is_thread_instrumented;
DELIMITER $$
CREATE DEFINER='root'@'localhost' FUNCTION ps_is_thread_instrumented (
in_connection_id BIGINT UNSIGNED
) RETURNS ENUM('YES', 'NO', 'UNKNOWN')
COMMENT '
Description
-----------
Checks whether the provided connection id is instrumented within Performance Schema.
Parameters
-----------
in_connection_id (BIGINT UNSIGNED):
The id of the connection to check.
Returns
-----------
ENUM(\'YES\', \'NO\', \'UNKNOWN\')
Example
-----------
mysql> SELECT sys.ps_is_thread_instrumented(CONNECTION_ID());
+------------------------------------------------+
| sys.ps_is_thread_instrumented(CONNECTION_ID()) |
+------------------------------------------------+
| YES |
+------------------------------------------------+
'
SQL SECURITY INVOKER
NOT DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE v_enabled ENUM('YES', 'NO', 'UNKNOWN');
IF (in_connection_id IS NULL) THEN
RETURN NULL;
END IF;
SELECT INSTRUMENTED INTO v_enabled
FROM performance_schema.threads
WHERE PROCESSLIST_ID = in_connection_id;
IF (v_enabled IS NULL) THEN
RETURN 'UNKNOWN';
ELSE
RETURN v_enabled;
END IF;
END$$
DELIMITER ;
上一篇: ps_is_instrument_default_timed()函数 | 下一篇: ps_thread_account()函数
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!