15.7.2 MERGEtable 问题

以下是MERGE个 table 的已知问题:

从 5.1.23 版开始,MERGE 子级通过父 table 被锁定。如果 parent 是临时的,则它不会被锁定,因此孩子也不会被锁定。 MyISAMtable 的并行使用损坏了它们。

类似的考虑适用于插入...在重复的密钥更新上

意外的结果包括对MERGEtable 的操作将报告 table 损坏的可能性。如果在基础MyISAMtable 上的命名操作之一之后发生这种情况,则损坏消息是虚 Pseudo。要解决此问题,请在修改MyISAMtable 后发出FLUSH TABLES语句。

CREATE TABLE m1 ... ENGINE=MRG_MYISAM ...;
LOCK TABLES t1 WRITE, t2 WRITE, m1 WRITE;
ALTER TABLE m1 ... UNION=(t1,t2) ...;

但是,您可以使用临时的MERGEtable 来执行此操作。

CREATE TABLE m1 ... ENGINE=MRG_MYISAM ... SELECT ...;

尝试执行此操作将导致错误:* tbl_name *不是BASE TABLE

首页