2012-04-09 175 views
2

我有一个InnoDB MySQL数据库。当我输出SQL转储时,锁定是如何发生的?整个数据库在导出过程中是否锁定?或者只是桌子?或者只是个别的行?导出如何与InnoDB一起工作?MySQL InnoDB表导出锁定

回答

0

您可以控制什么是锁定的。

要成为最安全的,可以锁定所有类似的表:

mysqldump --lock-all-tables 

文档:在所有数据库锁定所有表。这是通过获取整个转储期间的全局读锁来实现的。此选项会自动关闭 - 单事务和 - 锁表。

或者,如果你确定你不会改变表:

mysqldump --single-transaction 

文档:虽然--single事务转储过程,以确保有效的转储文件(正确的表的内容和二进制日志坐标),没有其他连接应该使用以下语句:ALTER TABLE,CREATE TABLE,DROP TABLE,RENAME TABLE,TRUNCATE TABLE。一致的读取与这些语句不是隔离的,因此在转储的表上使用它们会导致由mysqldump执行的SELECT检索表内容以获取不正确的内容或失败。