sql >> Databáze >  >> RDS >> Mysql

Zabránit čtení při aktualizaci tabulky

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.


  1. ukládání cizího klíče, nikoli z metody POST formuláře, ale pomocí dat formuláře, které již mám

  2. Přesunutí existující tabulky z primární skupiny souborů do jiné skupiny souborů

  3. Dotaz na databázi MySQL

  4. Windows Batch Script pro zálohování místních databází MySQL a uchovávání pouze N nejnovějších SLOŽEK se záložními soubory