选择MYSQL表上的查询耗时较长且超时

选择MYSQL表上的查询耗时较长且超时,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我有一个有200万行的mysql表,当我在表上运行任何select查询时,执行它需要很长时间,最终它不会返回任何结果 我已经尝试从Mysql工作台和终端运行select查询,这是同样的问题 下表如下: `object_master` `key` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `bucket` varchar(255) DEFAULT NULL, `object_name` varchar(300

我有一个有200万行的mysql表,当我在表上运行任何select查询时,执行它需要很长时间,最终它不会返回任何结果

我已经尝试从Mysql工作台和终端运行select查询,这是同样的问题

下表如下:

`object_master` 
  `key` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `bucket` varchar(255) DEFAULT NULL,
  `object_name` varchar(300) DEFAULT NULL,
  `object_type` varchar(50) DEFAULT NULL,
  `last_modified_date` datetime DEFAULT NULL,
  `last_accessed_date` datetime DEFAULT NULL,
  `is_deleted` tinyint(1) DEFAULT '0',
  `p_object` varchar(300) DEFAULT NULL,
  `record_insert_time` datetime DEFAULT CURRENT_TIMESTAMP,
  `record_update_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`key`)
ENGINE=InnoDB DEFAULT CHARSET=latin1
下面是我正在运行的select查询:

select `key` from object_master;
即使是
limit 1
也需要很长时间且不返回结果,其超时:

select `key` from object_master limit 1;
谁能告诉我这里的真正原因是什么

我还想提一下:在运行这些select查询之前,有一个ALTERTABLE语句在这个表上执行,它在10分钟后超时,并且这个表保持未更改状态

以下是alter语句:

alter table object_master
modify column object_name varchar(1096) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

注意:使用MYSQL 5.7.24版和在Linux Docker容器上运行的MYSQL。

所以我解决了这个问题:

有一个Java批处理程序,它长时间在同一个表上执行查询,并在表上持有一个锁。我是通过“processlist”信息表\u schema找到的

必须通过终端终止长时间运行的查询:

mysql> kill <processlist_id> ; 
mysql>kill;
然后它打开了那张桌子上的锁,一切都解决了

已从下面获得帮助,请回答:


  • 就是那张桌子吗?a
    是否从dual中选择1返回一行?可以是任何东西,从表上未释放的锁到网络问题
    key
    mysql
    的保留字。。。您不能按键命名任何列。@ash:如果您像OP一样在列的周围加上记号,您可以这样命名。但你是对的,你可能不应该这样做,因为这只会使处理它变得比需要的更困难。@all:我解决了这个问题。有一个Java批处理程序,它长时间在同一个表上执行查询,并在表上持有一个锁。我是通过“processlist”信息表\u schema找到的。不得不通过终端终止长时间运行的查询。然后它打开了那张桌子上的锁,一切都解决了。