Apache Derby DB でパフォーマンス テストを行っているときに、いくつかの奇妙な動作に気付きました。
パフォーマンス テストのために 5 回テストを実行します。各実行の前に、テーブルにいくつかのデータを挿入します。たとえば、最初の実行ではテーブルに 500k タプルを使用し、2 回目の実行では 1000k のタプルを使用し、5 回目の実行では 2500k のタプルを使用します。
クエリの実行時間は次のようになります: 200ms、450ms、700ms、500ms、550ms
つまり、4 回目の実行では 3 回目の実行よりも高速ですが、4 回目の実行ではより多くのデータをスキャンして取得する必要があります。それは非常に奇妙です。
私が想像できる唯一の理由は、Derby が時々、またはテーブル内のデータが特定のしきい値を超えるとすぐに、いくつかの内部構造または物理レイアウトを最適化することです。とにかく、この最適化を手動でトリガーして、単調に非減少の実行時間測定値を取得できますか?
または、この動作の正確な理由を知っていますか?
前もって感謝します!