• insert … select是很常见的在两个表之间拷贝数据的方法。不过需要注意,在可重复读隔离级别下,这个语句会给select的表里扫描到的记录和间隙加读锁。
  • 如果insert和select的对象是同一个表,则有可能会造成循环写入。这种情况下需要引入用于临时表来做优化。
  • insert语句如果碰上唯一键冲突,会在冲突的唯一值上加共享的next-key lock(S锁),因此,碰到唯一键约束导致的报错后,要尽快提交或回滚事务,避免加锁时间过长。