Saya memiliki database SQLite yang digunakan oleh dua proses. Saya bertanya-tanya, dengan versi terbaru SQLite, sementara satu proses (koneksi) memulai transaksi untuk menulis ke database, akankah proses lain dapat membaca dari database secara bersamaan?
89
Jawaban:
Saya mengumpulkan informasi dari berbagai sumber, kebanyakan dari sqlite.org, dan mengumpulkannya:
Pertama, secara default, beberapa proses dapat memiliki database SQLite yang sama yang dibuka pada waktu yang sama, dan beberapa akses baca dapat dipenuhi secara paralel.
Dalam kasus penulisan, satu tulis ke database mengunci database untuk waktu yang singkat, tidak ada, bahkan membaca, dapat mengakses file database sama sekali.
Mulai versi 3.7.0, opsi "Write Ahead Logging" (WAL) baru tersedia, di mana membaca dan menulis dapat dilanjutkan secara bersamaan.
Secara default, WAL tidak diaktifkan. Untuk mengaktifkan WAL, lihat dokumentasi SQLite.
sumber
SQLite3 secara eksplisit mengizinkan banyak koneksi :
Untuk berbagi koneksi, gunakan cache bersama SQLite3 :
sumber