Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapobiegaj odczytywaniu podczas aktualizowania tabeli

Zakładając, że używasz silnika transakcyjnego (zwykle Innodb), wyczyść i uzupełnij tabelę w tej samej transakcji.

Upewnij się, że czytelnicy używają READ_COMMITTED lub wyższego poziomu izolacji transakcji (domyślnie jest to READ REPEATABLE, który jest wyższy).

W ten sposób czytelnicy będą nadal mogli czytać starą zawartość tabeli podczas aktualizacji.

Należy uważać na kilka rzeczy:

  • Jeśli tabela jest tak duża, że ​​wyczerpuje obszar wycofywania — jest to możliwe, jeśli zaktualizujesz całą (powiedzmy) tabelę rzędu 1M. Oczywiście można to dostosować, ale istnieją ograniczenia
  • Jeśli transakcja nie powiedzie się w połowie i zostanie wycofana - wycofywanie dużych transakcji jest BARDZO nieefektywne w InnoDB (jest zoptymalizowane pod kątem zatwierdzeń, a nie wycofywania)
  • Uważaj na zakleszczenia i limity czasu oczekiwania na blokadę, które są bardziej prawdopodobne, jeśli używasz dużych transakcji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy dołączanie do wstawiania/aktualizacji w MySQL jest operacją niepodzielną?

  2. Zaktualizuj tabelę MySQL za pomocą pliku CSV

  3. Procedury składowane MySQL nie działają z SELECT (pytanie podstawowe)

  4. jak przyciąć wiodące zera z tekstu alfanumerycznego w funkcji mysql

  5. sprawdź, czy e-mail istnieje w bazie danych MySQL