项目场景:
程序执行查询操作时,第一次查询会很慢,后面再连续执行时速度会快很多,过段时间后再查询第一次又会变慢。
问题描述
一个查询语句,第一次执行时耗时109ms,第二次执行耗时6ms。过段时间再执行第一次耗时110ms,第二次执行4ms。
原因分析:
第一次查询时,数据库会将查询出的部分数据和索引从磁盘加载到内存中作为缓存,后续查询时会直接从内存缓存中获取数据,自然要比直接从磁盘上加载数据快很多;数据库会定期清除缓存,所以Sql语句如果长期不执行,内存中的缓存就会被清除,再次查询时需要重新从磁盘加载数据并放入到内存缓存中。