我对表中的select
和insert
行进行了查询,并将自动增量col作为键。
insert into table a select * from table B
我发现在执行查询后,table B
有可能吗? 或者我的select语句无法插入一些记录??
请帮忙。
我无法重复这种情况,因为这是一个生产服务器,在执行查询之前我没有备份。
非常感谢。
答案 0 :(得分:2)
如果您将InnoDB
与INSERT IGNORE
一起使用,则可能需要阅读本文讨论此问题:
Avoiding auto-increment holes on InnoDB with INSERT IGNORE
InnoDB检查一个auto_increment计数器 表,如果需要一个新值,则递增计数器和 将新值分配给列。在MySQL 5.1.22之前使用了InnoDB 访问称为“传统”的计数器值的方法。这个 使用一个名为AUTO-INC的特殊表锁,直到结束 查询或事务。因此,两个查询不能有 AUTO-INC同时锁定,因此我们失去了并发性 性能。长时间运行的查询问题更严重 比如INSERT INTO table1 ... SELECT ... FROM table2。
使用select中的简单插入时,有一个known bug about this
总之,我不会说这是您的查询的问题,但更多与引擎处理来自选择块的插入的方式有关。