我没有大量的MySQL背景,我想知道有谁可以让我对MySQL的查询优化器有所了解,以及在确定查询执行的查询计划时对磁盘访问成本的影响。 我对于在磁盘访问时间上收集的任何统计信息是否会对一组固定查询的查询执行计划产生影响感兴趣。特别是,在同一数据库映像上运行相同的查询集时,这些映像驻留在具有不同性能的不同驱动器上。 (请注意,从MySQL的角度来看,这是相同的数据库;数据目录只是驻留在不知道的情况下在MySQL下“切换”的不同驱动器上。观察到的磁盘性能的这种变化是否会影响查询优化器在运行时进行的查询计划决策? 我希望在考虑磁盘访问之前,优化器可以做更多与SQL本身相关的其他事情,但是你们中的一些人在处理查询优化器方面比我有更多的经验。
感谢您的帮助!
答案 0 :(得分:1)
我不知道MySQL中pyhsical I / O访问的优化。 但是,查询优化器会尝试最小化查询执行的必需I / O(例如,块数)。
内存和辅助I / O系统之间的速度差距非常大,以至于在内存中保持有效的缓存是大多数关系数据库系统中性能的关键问题。
因此,查询计划应尽可能减少查询所需的I / O,但设备速度要快。
<Query Result> <--[Logical I/O]-- <Main Memory> <--[Physical I/O]-- <Secondary I/O System>