为什么第一次执行没有查询缓存的mysql查询比以后执行需要更长的时间?

时间:2013-04-17 16:57:15

标签: mysql database

我正在尝试优化SELECT SQL_NO_CACHE col FROM TABLE ..形式的查询。当我第一次连接到数据库并执行查询时,大约需要9秒。当我第二次执行查询时需要大约0.1秒。我将SQL_NO_CACHE放在查询中以确保mysql不从缓存中读取结果。我的问题是为什么在连接到数据库(mysql -uroot ...)之后第一次执行查询所花费的时间比后续执行要长得多。查询的实际执行时间是多少?

1 个答案:

答案 0 :(得分:2)

MySQL可能需要一段时间来预热其内部缓存。请记住,SQL_NO_CACHE表示仅避免查询缓存。从性能角度来看,索引缓存是最重要的。如果没有读取索引,则在第一次使用时会有很大的损失。

如果您正在使用InnoDB,请确保缓冲池足够大。大多数服务器应至少分配几GB的内存。