Za předpokladu, že používáte transakční modul (obvykle Innodb), vymažte a znovu vyplňte tabulku ve stejné transakci.
Ujistěte se, že vaši čtenáři používají READ_COMMITTED nebo vyšší úroveň izolace transakcí (výchozí je REPEATABLE READ, což je vyšší).
Čtenáři tak budou moci během aktualizace i nadále číst starý obsah tabulky.
Je třeba si dát pozor na několik věcí:
- Pokud je tabulka tak velká, že vyčerpává oblast vrácení – je to možné, pokud aktualizujete celou (řekněme) tabulku řádků s 1 milionem. Samozřejmě je to laditelné, ale existují limity
- Pokud se transakce částečně nezdaří a je vrácena zpět – vracení velkých transakcí je v InnoDB VELMI neefektivní (je optimalizováno pro potvrzení, nikoli pro vrácení zpět)
- Dávejte si pozor na zablokování a prodlevy čekání na uzamčení, které jsou pravděpodobnější, pokud používáte velké transakce.