INNODB的Mysql性能问题

INNODB的Mysql性能问题,mysql,linux,performance,Mysql,Linux,Performance,我的linux Web服务器上的一些数据库有一个非常奇怪的性能问题。第一: 问题出现在不同的INNODB表中 表中只有10-15000个条目 索引正确 每天只发生一到两次 以下查询非常慢(只是偶尔): 字段“id”是主字段(整数),该表有大约20个条目。如何处理这样的查询需要30秒?目前没有其他查询。看起来/感觉mysql服务器进入了某种休眠模式,现在需要时间再次唤醒。通常,此查询所需时间小于0.00001秒 是否有人有相同的问题/解决方法 谢谢 如果要查询id='10',则id是一个int

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

  • 问题出现在不同的INNODB表中
  • 表中只有10-15000个条目
  • 索引正确
  • 每天只发生一到两次
以下查询非常慢(只是偶尔):

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

是否有人有相同的问题/解决方法


谢谢

如果要查询
id='10'
,则id是一个int。每次运行查询时,id将转换为varchar,而indez将不是用户。因此,这样做会更快:

WHERE id = 10

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

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

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

尝试一个常量值for now(),看看它是否有任何区别。尝试执行
解释更新…
,请打印执行计划!类型转换?请删除数字上的引号并再次执行查询。
 SET PROFILING=1;
UPDATE t_contentlocks 
SET  lastaccess = NOW(),  has_write_access = '1'  
WHERE id = '10';
show profile for QUERY 1;