Ervan uitgaande dat u een transactie-engine gebruikt (meestal Innodb), moet u de tafel wissen en opnieuw vullen in dezelfde transactie.
Zorg ervoor dat uw lezers READ_COMMITTED of een hoger transactie-isolatieniveau gebruiken (de standaard is REPEATABLE READ, wat hoger is).
Op die manier kunnen lezers tijdens de update de oude inhoud van de tabel blijven lezen.
Er zijn een paar dingen waar u op moet letten:
- Als de tabel zo groot is dat het terugdraaigebied wordt uitgeput, is dit mogelijk als u de hele (zeg) 1M rijtabel bijwerkt. Dit kan natuurlijk worden aangepast, maar er zijn grenzen
- Als de transactie halverwege mislukt en wordt teruggedraaid - het terugdraaien van grote transacties is ZEER inefficiënt in InnoDB (het is geoptimaliseerd voor vastleggingen, niet voor terugdraaiingen)
- Pas op voor deadlocks en time-outs voor vergrendelingswachten, die waarschijnlijker zijn als u grote transacties gebruikt.