Jen jedna věc ti chybí. Zejména, pokud používáte InnoDB, chcete do příkazu SELECT explicitně přidat klauzuli ORDER BY, abyste zajistili, že vkládáte řádky v pořadí primárního klíče (shlukovaného indexu):
INSERT INTO product_backup SELECT * FROM product ORDER BY product_id
Zvažte odstranění sekundárních indexů ze zálohovací tabulky, pokud nejsou potřeba. To také ušetří určité zatížení serveru.
A konečně, pokud používáte InnoDB, snižte počet požadovaných zámků řádků a pouze explicitně uzamkněte obě tabulky:
LOCK TABLES product_backup WRITE;
LOCK TABLES product READ;
INSERT INTO product_backup SELECT * FROM product ORDER BY product_id;
UNLOCK TABLES;
Zamykání pravděpodobně nebude velký rozdíl, protože zamykání řádků je velmi rychlé (i když ne tak rychlé jako zámky tabulky), ale když jste se zeptali.