添加二级密钥时,缓慢插入MySQL innoDB表

时间:2011-10-30 16:50:53

标签: mysql database insert innodb indexing

我有一个InnoDB表的缓存问题,我无法弄清楚:

  • 我有一个包含5列的表,其中4列构成主键,还有3列次键;在该表中,批量插入需要很长时间 - 对于100,000条记录(仅为250条记录/秒)最多可达400秒
  • 如果删除所有二级索引,插入速度非常快 - 100,000条记录为20秒(5000条记录/秒或20倍快)
  • 如果我再添加一个二级密钥,在一个bigint user-id列上也是主键的一部分(我经常需要搜索特定用户的数据),插入会立即变为3-4时间慢了。

这里发生了什么?我怀疑答案是InnoDB存储索引的方式,但经过大量阅读后,我无法弄明白。最令人遗憾的是,添加了所有索引的同一个表,MyISAM引擎始终以5000条记录/秒的速度运行。

1 个答案:

答案 0 :(得分:0)

我不知道为什么。但MySQL网站提供了一个性能调优技巧,用于使用辅助密钥插入InnoDB(这意味着我只是这样,你必须处理它):"If you have UNIQUE constraints on secondary keys, you can speed up table imports by temporarily turning off the uniqueness checks during the import session..."