使用InnoDB,无论何时执行INSERT IGNORE或ON DUPLICATE KEY UPDATE,它都会自动增加表,无论是否插入任何内容。
这个问题很可悲。
有什么简单的方法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
InnoDB允许您回滚交易。这意味着您可以插入到一个表中,无法将相关记录插入另一个表,然后回滚第一个插入。在此期间,其他插入可能发生在第一个表中,它也需要一个唯一的ID。在这种情况下,你不能放弃分发的自动增量。
在INSERT IGNORE上,InnoDB只能通过尝试插入来判断是否已有记录。插入前需要自动增量。你不能搜索然后插入,因为其他进程可能正在做同样的事情,并在select和insert之间插入相同的记录。
除非您认为超过该字段的最大值,否则您应该担心它。对于bigint来说,这非常大。 Facebook使用bigint并且还没有用完。