Wal_checkpoint(FULL)を実行した後、cpコマンドを使用してSQLiteDBのバックアップを取ります。 DBはWALモードで使用されているため、私のフォルダーには-shmや-walなどの他のファイルがあります。 wal_checkpoint(FULL)を実行すると、WALファイルの変更がデータベースにコミットされます。チェックポイントを実行した後、-walファイルと-shmファイルが削除されるかどうか疑問に思っています。そうでない場合、それらには何が含まれていますか?
SQLiteバックアップAPIを使用していないため、バックアッププロセスが適切でないことはわかっています。これは私のコードのバグです。
チェックポイントを実行した後、-shmおよび-walファイルに含まれるコンテンツを誰かに提案できますか。
提供されたリンクは役に立ちます。
ありがとう
多くの情報源を検索した後、私は次のことが真実であると信じています。
-shm
ファイルには、-wal
ファイルへのインデックスが含まれています。 -shm
ファイルは、-wal
ファイルを読み取るときのパフォーマンスを向上させます。-shm
ファイルが削除されると、次回のデータベースアクセス時に再度作成されます。checkpoint
を実行すると、-wal
ファイルを削除できます。安全なバックアップを実行するには:
-shm
ファイルと-wal
ファイルが削除されます。その後、cp
、scp
などを使用してバックアップを作成できます。checkpoint
の後にvacuumコマンドを実行する必要があります。これにより、データベースファイルの断片化が解消され、サイズが縮小されるため、ネットワークを介して転送されるデータが少なくなります。-shm
ファイルには永続的なデータは含まれていません。
最後の接続が閉じられると、データベースは自動的にチェックポイントされ、-wal
ファイルはその後削除されます。これは、チェックポイントの後、他の接続が存在しない場合、-wal
ファイルには重要なデータは含まれていません。
可能であれば、バックアップを取る前に接続を閉じる必要があります。