在查阅MySQL手册[1,2]后,似乎执行表的重命名需要全局表锁。一些快速实验证实了这一点这意味着如果针对此表执行任何SELECT
语句,则RENAME
操作将阻塞,直到SELECT
语句完成执行。
我想知道是否可以使用InnoDB或任何其他数据库引擎(PostgreSQL可能?),其中只读操作不会阻止数据库执行RENAME table
。
我认为如果两个操作同时发生,SELECT
将继续从新表名中读取。
[1] https://dev.mysql.com/doc/refman/5.0/en/rename-table.html