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

Zmień stół bez blokowania całego stołu

Krótka odpowiedź:Dla MySQL <5.6 wymagane są blokady. Od 5.6 i przy użyciu InnoDB blokady nie są wymagane dla wielu ALTER TABLE operacje, w tym dodawanie kolumny .

Jeśli używasz MySQL 5.5 lub starszego, otrzyma on blokadę odczytu na całą operację, a na końcu krótką blokadę zapisu.

Z dokumentacji MySQL dla ALTER TABLE ...

Oznacza to, że podczas dodawania odczytanej kolumny blokuje tabelę przez większość operacji, a na końcu otrzymuje blokadę zapisu.

MySQL 5.6 dodał DDL online do InnoDB, który przyspiesza i poprawia wiele rzeczy, takich jak zmiana tabel i indeksów. Dodanie kolumny do tabeli nie będzie już wymagać blokad tabeli oprócz możliwie krótkich wyłącznych blokad na początku i na końcu operacji .

powinno dzieje się to automatycznie, ale dla pewności ustaw ALGORITHM=inplace i LOCK=none do ALTER TABLE oświadczenie.

Jest jeden wyjątek...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać rekordy z ostatnich 7 dni w MySQL?

  2. Czy istnieje coś analogicznego do metody split() w mySql?

  3. MySQL:UPDATE tabelę z COUNT z innej tabeli?

  4. wydajność licznika mysql

  5. przesyłanie wielu plików graficznych do galerii php mysql