sql >> Database >  >> RDS >> Mysql

een vergrendelde tafel hernoemen

Hoewel Rick in het algemeen gelijk heeft om de Percona Tools te gebruiken (zie 1 en 2 ), is het antwoord op de vraag eigenlijk het gebruik van ALTER TABLE . Ik dacht RENAME was gewoon een alias - maar het lijkt erop dat dat niet het geval is .

Test lijkt aan te geven dat dit goed werkt:

CREATE TABLE foo_new (...)

-- copy data to new table, might take very long
INSERT INTO foo_new (id,created_at,modified_at)
  SELECT * FROM foo WHERE id <= 3;

LOCK TABLES foo WRITE, foo_new WRITE;

-- quickly copy the tiny rest over
INSERT INTO foo_new (id,created_at,modified_at)
  SELECT * FROM foo WHERE id > 3;

-- now switch to the new table
ALTER TABLE foo RENAME TO foo_old;
ALTER TABLE foo_new RENAME TO foo;

UNLOCK TABLES;


  1. waarom wordt de `tcgetattr`-fout gezien wanneer ssh wordt gebruikt om het back-upbestand op een andere server te dumpen?

  2. PHP/MySQL:Modelleer herhalende gebeurtenissen in een database, maar zoek naar datumbereiken

  3. De ANSI_NULLS-instelling van een database vinden in SQL Server (T-SQL)

  4. CakePHP:nieuwe HABTM-rij maken, in plaats daarvan updaten andere