我有一个大约64个孩子的并行流程,每个孩子都需要将数据插入到登陆表中。我目前正在使用MySQL MyISAM引擎,我在插入之前和之后禁用了密钥。
然而,这似乎是我的过程中的一个巨大瓶颈。我相信MySQL是每个插入的表锁定,因此进程一直在等待写入。
插入物是独立的,没有插入冲突的危险。这也不需要交易或任何性质的东西。
是否有不同的引擎或提高MySQL插入/写入性能的方法?
我已经考虑过为每个进程实例化一个表,但这会使代码变得更复杂,这不是我的风格......
任何建议都将不胜感激。
谢谢!
答案 0 :(得分:4)
DELAYED
语句的INSERT
选项是标准SQL的MySQL扩展,如果您的客户端无法或不需要等待INSERT
完成,则非常有用。 / p>
[ deletia ]
使用
INSERT DELAYED
的另一个主要好处是来自许多客户端的插入被捆绑在一起并写在一个块中。这比执行许多单独的插入要快得多。
答案 1 :(得分:2)
MyISAM在插入,更新或删除时确实锁定了表格。 InnoDB允许事务和基于行的锁。
您还可以查看批量插入速度更快的LOAD DATA INFILE。