执行相同查询100次并获取所有查询执行时间的最佳方法是什么,然后获得平均时间。我不想100次开始相同的查询。之后我想计算测量中的相对和绝对误差。
答案 0 :(得分:0)
您的查询需要SQL_NO_CACHE修饰符,如果您要多次运行它以测量性能。
SELECT SQL_NO_CACHE whatever FROM whatever WHERE whatever
即使您这样做,也不会一遍又一遍地重复相同的查询,从而无法获得有用的数据。为什么不?即使你的表很庞大,MySQL也会将满足查询所需的大量数据带入内存。如果您在安静的系统上执行此操作,则第二次运行查询时,您几乎可以保证获得更好的性能。
回答有关多次启动查询的问题:这是您多次运行它的方式。如果您正在尝试评估性能,则需要包括接收,解析,计划和执行查询所需的时间。
(其他一些DBMS制作和模型提供预处理语句,以某种方式缓存解析的,计划的和准备执行的查询,以某种编译形式。不是MySQL)。
如果您在繁忙的系统上运行一小时左右的查询,则可以更好地估计查询的时间。
请注意:查询性能的第90个百分点是比平均值更有价值的度量。大多数查询在多次使用时运行良好。但有时它们挂断(由于系统上的其他流量等),90百分位告诉你那些边远表现不佳的人。