0

我的 linux 网络服务器上的一些数据库有一个非常奇怪的性能问题。第一的:

  • 问题出现在不同的 INNODB 表中
  • 表中只有 10 - 15000 个条目
  • 正确索引
  • 一天只发生一次或两次

以下查询非常慢(只是不时):

UPDATE t_contentlocks 
SET  lastaccess = NOW(),  has_write_access = '1'  
WHERE id = '10'

字段“id”是主要的(整数),表有大约 20 个条目。如何处理这样的查询需要 30 秒?此时没有其他查询。看起来/感觉 mysql 服务器进入了某种休眠模式,现在需要时间再次唤醒。通常这个查询需要不到 0.00001 秒。

有人有同样的问题/有什么解决办法吗?

谢谢!

4

2 回答 2

0

你做查询id = '10',id是一个int。每次运行查询时,id 都将转换为 varchar,并且 indez 将不是用户。所以这样做会快得多:

WHERE id = 10

现在索引将是用户,我不确定它是否会解决您的 30 秒问题。

于 2013-02-04T10:12:15.643 回答
0

除了对等答案之外,您还可以检查对查询的分析,然后通过查看查询执行需要更多时间的位置来做出正确的决定。

 SET PROFILING=1;
UPDATE t_contentlocks 
SET  lastaccess = NOW(),  has_write_access = '1'  
WHERE id = '10';
show profile for QUERY 1;
于 2013-02-04T10:15:23.037 回答