Docker中Percona MySQL查询间歇性无限循环问题求助
Docker环境下Percona MySQL查询间歇性无限执行问题求助
环境:Docker部署的Percona Distribution MySQL,镜像版本percona:8.0.32-24,my.cnf配置为空。
近4周一直在排查某查询间歇性无限执行的问题:通过MySQL Shell导入数据挖掘算法生成的多个CSV后运行该查询,半数情况下可在2-3秒内成功执行;其余情况会陷入无限循环(持续2天以上),rows_fetched数值持续增长,即便已显示正确的rows_inserted数值。
表结构
CREATE TABLE algo_rca_rule_metric ( key varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, rule_id int unsigned NOT NULL, context_id int unsigned NOT NULL, value double NOT NULL, PRIMARY KEY (key,value,rule_id), KEY key_rule_id (rule_id,key,value) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
问题查询语句
执行前已插入confidence和support两个指标数据,查询语句如下:
INSERT INTO algo_rca_rule_metric SELECT 'confidence_order' AS 'key', metric_confidence.rule_id, metric_confidence.context_id, row_number() over (ORDER BY metric_confidence.value ASC, metric_support.value ASC) AS 'value' FROM algo_rca_rule_metric metric_confidence LEFT JOIN algo_rca_rule_metric metric_support ON (metric_confidence.rule_id = metric_support.rule_id AND metric_support.key = 'rule_support') WHERE metric_confidence.key = 'confidence';
即使去掉INSERT操作,仅保留SELECT部分,仍会出现相同的无限循环问题。
异常时观测到的现象
- 执行
show processlist,该查询状态为status = "Execute" - 执行
show engine innodb status,事务部分找不到该查询的相关记录 - 执行
select * from sys.schema_table_statistics WHERE table_schema = 'DB_NAME',rows_fetched数值持续无限增长(相同数据集下,异常情况的rows_fetched远高于正常执行时的数值)
已获取该查询的EXPLAIN执行计划,恳请各位提供相关分析或解决思路。
内容的提问来源于stack exchange,提问作者Louis
相关产品推荐
相关产品推荐

