Linux上的MySQL(Redhat)冻结大表上的查询

我们有一个运行LAMP的服务器,其中包含一些zencart站点。 在尝试查看其中一个网站的订单时发现问题,并且超时。 现在当我这样做时:

"select * from orders" 

整个事情冻结,所以:

 SHOW PROCESSLIST 

现在订单表中应该有大约42000个订单,不要那么大。 任何人都可以推荐任何好的诊断技术来弄清楚什么是错误的?

当你“解释select * from orders”查询时会发生什么? 和“select计数( )从订单”? 解释说明应该让你对你的查询发生什么有一些了解(它解释了服务器将如何执行它并帮助你诊断瓶颈) ,如果你提到的42000仍在这个范围内,count( )会让你知道。

我认为你的索引有问题。 你能试一下吗

 OPTIMIZE TABLE `orders` CHECK TABLE `orders` REPAIR TABLE `orders` 

你也可以尝试倾销和重新创build。

pipe理解决这个问题。 使用MySQL查询浏览器,我可以看到当前正在运行的线程。 有几个密集的MyIsam quaries由于某种原因locking了表。 我杀了这些,积压在几秒钟内清除。 恢复正常。 WOOP!