Nói chung, Rick đúng khi sử dụng Công cụ Percona (xem 1
và 2
), câu trả lời cho câu hỏi thực sự là sử dụng ALTER TABLE
. Tôi nghĩ RENAME
chỉ là một bí danh - nhưng có vẻ như không phải vậy
.
Kiểm tra dường như chỉ ra rằng điều này hoạt động tốt:
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;