10000の統合テストのそれぞれは、クリーンアップ段階で、それぞれが完了する前にデータベースを元の「クリーン」状態に復元する必要があります。すべてのテストの実行には時間がかかり、時間の80%はデータベースの復元操作に費やされます。
復元操作は、単にディスクからバックアップを取り、それを復元します。これを最適化する方法があるかどうか私は今疑問に思っています。私が考えている1つのオプションは、バックアップファイルの場所をディスクからメモリに変更することです。それは可能ですか?
別のオプションは、テーブルデータのみのスナップショットを取り、それのみをバックアップデータとして保存することです。次に、バックアップファイルが小さくなり、復元が速くなると想定します。それは可能ですか?
理想的には、復元を回避し、影響を受けるデータ(各テストが生成するデータ)をリセットするだけです。次のようなもの:「テストの開始以降に変更されたテーブル行を元に戻す」
どのようなオプションがありますか?私はこの分野の専門家ではありませんが、私の問題には簡単な解決策があるはずだと感じています。
データベースのスナップショットはおそらく正しい答えです Nicのコメントによると、特定の状況に適しています。
しかし、この質問を見つけた将来のユーザーにとって、ネイティブSQLデータベースのバックアップと復元の時間を改善する方法は確実にあります。