Dengan asumsi Anda menggunakan mesin transaksi (Biasanya Innodb), kosongkan dan isi ulang tabel dalam transaksi yang sama.
Pastikan pembaca Anda menggunakan READ_COMMITTED atau tingkat isolasi transaksi yang lebih tinggi (standarnya adalah REPEATABLE READ yang lebih tinggi).
Dengan begitu pembaca akan tetap dapat membaca isi tabel yang lama selama pembaruan.
Ada beberapa hal yang harus diperhatikan:
- Jika tabel sangat besar sehingga menghabiskan area rollback - ini dimungkinkan jika Anda memperbarui seluruh (misalnya) tabel baris 1 juta. Tentu saja ini bisa diatur tetapi ada batasannya
- Jika transaksi gagal di tengah jalan dan dibatalkan - mengembalikan transaksi besar SANGAT tidak efisien di InnoDB (dioptimalkan untuk komit, bukan pengembalian)
- Hati-hati dengan deadlock dan lock timeout, yang lebih mungkin terjadi jika Anda menggunakan transaksi besar.