2013-02-04 135 views
0

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

  • 问题在不同的InnoDB表occures
  • 只有10 - 表中的15000项
  • 索引正确
  • 只发生一天

下面的查询一次或两次非常缓慢(只是不时):

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

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

有人有同样的问题/任何修复它吗?

谢谢!

+0

为now()尝试一个常量值并查看它是否有任何区别。 – palindrom

+0

尝试执行'解释更新...',请打印执行计划! – Michael

+0

类型转换?您可以删除数字上的引号并再次执行查询。 – ravnur

回答

0

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

WHERE id = 10 

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

+0

不幸的是这并没有帮助... – Andi

0

除了同侪回答之外,您还可以检查分析查询,然后通过查看查询执行需要多少时间来做出正确决定。

SET PROFILING=1; 
UPDATE t_contentlocks 
SET lastaccess = NOW(), has_write_access = '1' 
WHERE id = '10'; 
show profile for QUERY 1;