0

我正在使用 mysql8 运行节点服务器。
此查询不断弹出并冻结。
SELECT /*+ MAX_EXECUTION_TIME(2000) */ COUNT(*) FROM my_table
即使这个查询已经MAX_EXECUTION_TIME在其中提到,它仍然执行超过这个限制(基本上它永远不会停止)。我看到它运行的最长时间大约是 20-30 天,即使在那之后它也没有停止,我已经重新启动了服务器。

主要问题是我什至无法终止此查询。即使在杀死它之后,它也会继续执行并且永不停止。
我什至无法重新启动mysql。尝试重新启动mysql后。它只是关闭,永远不会重新开始。
我不得不重新启动服务器(这是完全不可接受的)。

SHOW OPEN TABLES;
表明该表正在使用中。它不影响在表中读取、更新或插入数据。但是,一旦我尝试更改此表或任何其他对此表有任何引用的表。当查询发生死锁时,它会冻结整个节点服务器,并且每个查询都在等待第一个查询结束,如前所述,永远不会。

我的任何节点 js 代码中都不存在这个有问题的查询。
但是由我的节点服务器使用的用户(mysql用户)执行,我也使用这个用户和管理员。

此查询始终与此特定表一起显示。以下是show create table my_table;(表名和列名已更改)的示例输出

CREATE TABLE `my_table` (
`id` int NOT NULL AUTO_INCREMENT,
`col1` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
`col2` int NOT NULL,
`col3` longtext COLLATE utf8_unicode_ci,
`col4` longtext COLLATE utf8_unicode_ci,
`col5` mediumtext COLLATE utf8_unicode_ci,
`col5` int DEFAULT NULL COMMENT 'in seconds',
`col6` tinyint(1) NOT NULL DEFAULT '0',
`col7` int DEFAULT NULL,
`col8` int DEFAULT NULL,
`col9` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`col9` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `test_level` (`col7`),
KEY `col9` (`col9`),
KEY `col6` (`col6`),
KEY `col5` (`col5`),
KEY `col2` (`col2`),
CONSTRAINT `my_table_ibfk_1` FOREIGN KEY (`col7`) REFERENCES `table_1` (`id`),
CONSTRAINT `my_table_ibfk_2` FOREIGN KEY (`col2`) REFERENCES `table_2` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=4078 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

此表中的行数约为 4000。

确切的 mysql 版本 8.0.19

4

0 回答 0