我运行的过程很简单,它会定期提取RSS提要并更新MySQL数据库中的文章.
现在,articles表已填充到约13万行.对于找到的每篇文章,处理器都会检查该文章是否已经存在.这些查询几乎总是花费300毫秒,大约每10或20次尝试,它们就会花费2秒钟以上.
SELECT id FROM `articles` WHERE (guid = 'http://example.com/feed.rss') LIMIT 1;
# Query_time: 2.754567 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
我在guid列上有一个索引,但是每当遇到新文章时,它就会被添加到Articles表中-使查询缓存无效(对吗?).
慢查询日志中的其他一些字段报告检查了120行.
当然,在我的开发机器上,这些查询大约需要0.2毫秒.
该服务器是Engine Yard Solo(EC2)的虚拟主机,具有1.7GB的内存以及这些天附带的任何CPU EC2.
任何建议将不胜感激.
更新资料
事实证明,问题出在椅子和键盘之间.
我在’id’上有一个索引,但在’guid’上查询.
在“ guid”上添加索引可使查询时间降低到0.2毫秒.
感谢大家提供的所有有用提示!