3

私は通常、インメモリ SQLite3 DB でテスト スイートを実行します。ただし、postgres を絶対に必要とし、SQLite3 で例外を発生させるプロジェクトがいくつかあります。このような場合、どうすれば速度を改善できますか?

sqlite では 2.97 秒、postgres では 89.71 秒で実行されるテスト構成が 1 つあります。私はそれがクレイジーだということです。

postgres で fsync をオフにしました。これにより、101.59 秒から 89.71 秒になりました。

4

2 に答える 2

1

サーバー構成は確かにこの速度に影響を与える可能性があり、fsyncをオフにすると、テーブルの作成が速くなります。これは、初期起動コストの大きな部分です。

これのもう1つの部分は、Djangoがフィクスチャを処理する方法です。これは、フィクスチャが多数ある場合にパフォーマンスを著しく損なう可能性があります。Djangoはフィクスチャをロードし、各テストメソッド(各テストクラスではない)のトランザクションをロールバックします。フィクスチャのロード後にセーブポイントを使用してこのロードを最適化するサードパーティのアプリdjango-fasttestがあります。django-noseには、以前に作成したデータベースとフィクスチャのバンドルを再利用するための同様の最適化があります。

于 2012-06-08T18:06:58.093 に答える
0

現在の構成は何ですか?wikiもチェックしてください。

そして、実際の問題を見つけるために遅いクエリのログ記録を開始します。

于 2012-06-08T17:00:01.263 に答える