6

我有一个包含大约 64 个子进程的并行进程,每个子进程都需要将数据插入到登陆表中。我目前正在使用 MySQL MyISAM 引擎,并且在插入之前和之后禁用键。

但是,这似乎是我过程中的一个巨大瓶颈。我相信 MySQL 是每次插入的表锁定,因此进程一直在等待写入。

刀片是独立的,不存在刀片冲突的危险。这也不需要交易或任何类似性质的东西。

是否有不同的引擎或方法来提高 MySQL 的插入/写入性能?

我曾考虑为每个进程实例化一个表,但这会使代码更复杂,这不是我的风格......

任何建议将不胜感激。

谢谢!

4

2 回答 2

4

INSERT DELAYED语法中所述:

该语句的DELAYED选项INSERT是标准 SQL 的 MySQL 扩展,如果您的客户端无法或不需要等待INSERT完成,则该选项非常有用。

[ deletia ]

使用的另一个主要好处INSERT DELAYED是来自许多客户端的插入被捆绑在一起并写在一个块中。这比执行许多单独的插入要快得多。

于 2012-12-20T15:17:12.313 回答
2

MyISAM 在插入、更新或删除时确实会锁定表。InnoDB 允许事务和基于行的锁。

您还可以查看批量插入速度更快的LOAD DATA INFILE 。

于 2012-12-20T15:18:57.037 回答