缓存查询怎么可能花那么长时间?清除缓存后需要 25000 毫秒(我知道这太长了,但这不是问题所在)。缓存后需要 2500 毫秒。这里可能是什么问题?如果缓存了,我假设 Sql Server 会将其从 RAM 中取出。那么,又是 2500 毫秒???
答案1
因为可能需要很长时间?
缓存意味着查询计划被缓存,而不是结果。如果缓存不是最优的,或者您只是有糟糕的索引或大量数据 - 为什么不呢?;) 我见过查询运行了几个小时 - 在计划确定之后。
现在,您指出这是在虚拟机上 - 我只能说虚拟机通常对数据库来说很糟糕。一般来说它们没有什么问题,但是当我计划一个合适的数据库服务器时,我会花时间考虑我的磁盘布局。我见过的大多数虚拟机实现 - 忽略这一点。结果:糟糕的 IO。结果:处理缓慢。
对不起,VM 并没有抽象出物理现实。
我会真正查看 VM - 分配的 RAM、CPU、磁盘 - 然后进入物理层并查看磁盘如何转换为物理磁盘。