我正在做一个项目,在我的例子中,巨大的导入意味着大约20000行20列的数据,并且正在计划一些自制的不安全解决方案,以确保在中途出现错误时不会导入任何数据。
考虑到要处理的数据量,我认为MySQL事务不适合用于此目的。不过,我还是测试了一下。在导入之前,我启动一个事务,完成导入并提交它。在commit语句中,20000多行在几毫秒内顺利地插入到表中,而在导入期间没有任何明显的内存或CPU使用。
我不能把我的思想放在这上面!这是怎么工作的?限制在哪里?我浏览了交易文件,找不到任何关于它在引擎盖下是如何运作的信息。我想MySQL肯定是在耍花招,我应该注意万一事与愿违。
我接受任何关于以上段落的可靠信息的答复
最佳答案
仅受重做日志大小和硬件规格的限制。如果你做了大量的交易(2万是足够体面的,但不是没有听说过的几百万笔交易),请确保inno-db-log-file-size=[可接受的文件大小,如256M以上]设置为足够大的数量。
有关mysqlperformanceblog的更多有用信息:http://www.mysqlperformanceblog.com/2009/01/13/some-little-known-facts-about-innodb-insert-buffer/
关于mysql - MySQL在过渡(InnoDB)时如何处理巨大的插入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11078152/