sql >> Database teknologi >  >> RDS >> Mysql

Skift bord uden at låse hele bordet

Kort svar:For MySQL kræves <5.6 låse. Fra og med 5.6 og ved hjælp af InnoDB, låser er ikke nødvendige for mange ALTER TABLE handlinger, herunder tilføjelse af en kolonne .

Hvis du bruger MySQL 5.5 eller ældre, får den en læselås for hele operationen og derefter en kort skrivelås til sidst.

Fra MySQL-dokumentationen til ALTER TABLE ...

Hvilket vil sige, når du tilføjer en kolonne, låser den tabellen i det meste af operationen og får derefter en skrivelås til sidst.

MySQL 5.6 tilføjede Online DDL til InnoDB, som fremskynder og forbedrer mange ting, såsom at ændre tabeller og indekser. Tilføjelse af en kolonne til en tabel vil ikke længere kræve tabellåse undtagen muligvis korte eksklusive låse ved starten og slutningen af ​​operationen .

Det skal ske automatisk, men for at være sikker skal du indstille ALGORITHM=inplace og LOCK=none til din ALTER TABLE erklæring.

Der er én undtagelse...




  1. Beregn punkt 50 miles væk (nord, 45% NØ, 45% SV)

  2. 4 funktioner, der returnerer sekunddelen fra en tidsværdi i MariaDB

  3. Tabeltype i Oracle PL SQL-eksempel

  4. AND felt NOT IN(NULL) returnerer et tomt sæt