2

私が使用してPRAGMA temp_store=2いるので、すべての一時テーブルがメモリに作成されます。1,000,000,000レコードの一時テーブルがあります。テストアプリケーションで使用されるメモリは、最大80MBまで増加します。このテーブルまたはドロップテーブルからすべてのレコードを削除しても、アプリケーションは80MBのメモリを使用します。なぜsqliteはメモリを解放しないのですか?

よろしく

4

1 に答える 1

2

以前にテーブルで使用されていたメモリはデータベースの一部であり、後でその DB に挿入されたデータによって再利用されます。

そのメモリを完全に解放するには、データベース接続を閉じる必要があります (さらに一時データを保存する場合は、新しい接続を開きます)。

DB が後でデータを再利用することが予想される場合、マシンのメモリが極端に不足していない限り、その間にデータを解放しても無駄なオーバーヘッドになります。

于 2012-12-29T14:41:37.230 に答える