insert会锁表吗mysql_MySQL的insertintoselect引发锁表⼜是被⼤佬嫌弃的⼀天,为了不卷铺盖⾛⼈,我决定去学习⼀下表备份的常见⽅法。
MySQL⼀般我们在⽣产上备份数据通常会⽤到 这两种⽅法:INSERT INTO SELECT
CREATE TABLE AS SELECT注:本⽂仅针对MySQL innodb引擎,事务是可重复读RR,数据库版本为5.5
1.INSERT INTO SELECT
insert into Table2(field1,field2,...) select value1,value2,... from Table1
注意
(1)要求⽬标表Table2必须存在,并且字段field,field2…也必须存在
(2)注意Table2的主键约束,如果Table2有主键⽽且不为空,则 field1, field2…中必须包括主键
在执⾏语句的时候,MySQL是逐⾏加锁的(扫描⼀个锁⼀个),直⾄锁住所有符合条件的数据,执⾏完毕才释放锁。所以当业务在进⾏的时候,切忌使⽤这种⽅法。
在RR隔离级别下,还会加⾏锁和间隙锁
举个栗⼦吧:
CREATE TABLE `t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`c` int(11) DEFAULT NULL,
`d` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `c` (`c`)mysql 要钱吗
) ENGINE=InnoDB;
insert into t values(null, 1,1);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论