一、关于锁
- 在RR隔离级别
insert into table1 ...select * from table2:table1锁表,table2逐步锁(扫描一个锁一个,直至获取所有数据)
- 在RC隔离级别
insert into table1 ...select * from table2:table1锁表,table2逐步锁(扫描一个锁一个,然后立刻释放锁)
二、关于表
- 如果源表(table1)和目的表(table2) 是同一张表
那么它的处理流程是:
1.将源表select的结果放入一个临时表
2.然后将临时表的内容插入到目的表
注意项:磁盘空间是否充足,需要考虑临时表myisam 会将varchar转换成char ,临时表的大小比源表占磁盘大。
三、关于日志
binlog_format=row
需要考虑binlog刷盘导致的延迟。