在使用 Apache Derby DB 进行性能测试时,我注意到一些奇怪的行为:
我为性能测试做了五次测试。在每次运行之前,我都会在表中插入一些数据,这样我就可以进行第一次运行,例如在表中使用 500k 元组,第二次运行 1000k,第五次运行 2500k 元组。
查询的执行时间是这样的:200ms、450ms、700ms、500ms、550ms
也就是说,第四次运行比第三次运行快,尽管在第四次运行中必须扫描和获取更多数据。这很奇怪。
我能想象的唯一原因是,Derby 会不时优化一些内部结构或物理布局,或者一旦表中的数据超过某个阈值。无论如何,可以手动触发此优化以获得单调不递减的执行时间测量吗?
或者您知道这种行为的确切原因吗?
提前致谢!