Pertanyaan Apakah ekstensi .db-shm dan .db-wal di database Sqlite?


Saya melihat beberapa perilaku aneh dengan aplikasi saya dan status file databasenya setelah menjalankan beberapa tes yang menutup database, menghapusnya, dan menggantinya dengan perlengkapan tes. Ketika saya memeriksa file database dengan alat di PC debugging saya, itu tidak sesuai dengan apa yang tampaknya aplikasi itu sendiri melaporkan. Ada kemungkinan bahwa perilaku aneh ini terkait bug ini.

Saya melihat bahwa ada dua file dengan nama dasar yang sama dengan database (dengan yang normal .db ekstensi.) Ekstensi file adalah .db-shm dan .db-wal, dan masing-masing lebih baru daripada .db stempel waktu file.

Saya berasumsi bahwa ini adalah beberapa jenis file sementara. Namun, saya bertanya-tanya apakah aplikasi dihentikan, bukankah seharusnya dihapus? Lebih penting lagi, saya berasumsi data apa pun yang disimpan di dalamnya diperbarui di dalam .db file sebelum aplikasi diakhiri oleh sistem operasi. Apakah ini benar?


32
2017-10-15 15:25


asal


Jawaban:


Anda benar, ini adalah file sementara yang dibuat oleh SQLite. Jika Anda secara manual menghapus db utama Anda mungkin harus menghapus ini juga. Dari apa yang saya dapat kumpulkan WAL adalah pengganti untuk jurnal rollback yang memungkinkan SQLite untuk melakukan perubahan kembali ketika transaksi gagal. Bagaimana SQLite menggunakan mereka dan mengapa mereka disimpan begitu lama adalah untuk para penulis SQLite tetapi secara umum SQLite tampaknya cukup kuat sehingga saya tidak terlalu khawatir tentang mereka. Untuk info lebih lanjut lihat di sini:

http://www.sqlite.org/fileformat2.html#walindexformat

File-file ini adalah fitur baru dari SQLite 3.7. Saya tidak yakin apakah keberadaan mereka terkait dengan bug yang Anda tunjukkan, tetapi laporan bug menyarankan kerja-sekitar pula.


21
2017-10-15 18:23