Answers:
首先,并发写入绝对不是MyISAM存储的选项。它们每个都将锁定整个表(在某些情况下除外)。如果InnoDB不适合您,请尝试使用TokuDB。但由于TokuDB(当然还有InnoDB)引擎的事务性质,与MyISAM相比,它会更慢(您应该至少写入两次相同的数据:日志和数据文件)。另外,如果您的服务器有一天会崩溃,则您将等待几个小时,直到40Gb MyISAM表修复为止。
如果您仍然想将数据加载到MyISAM表中并希望快速完成,我建议您使用LOAD DATA INFILE
而不是插入。这是将大量数据加载到表中的最快方法。是的,索引将以指数方式降低插入性能。
关于分区的一句话:MySQL中的INSERT语句不支持修剪,因此将在每个语句上扫描所有分区以进行唯一索引匹配。同样,所有分区都将被锁定,直到插入结束。
这些插入查询是并发的还是源自同一过程?如果它们是并发的,则最好为此表使用InnoDB存储,因为MyISAM锁定整个表,而InnoDB利用行锁。如果不能切换到其他存储,则可以尝试INSERT DELAYED语句和许多其他插入优化。除非您将不同的分区放在不同的物理磁盘上,否则分区将无济于事。