我正在开展一个项目,在这个项目中,大量进口,在我的情况下意味着大约20 000行,包含20列数据,并且正在计划一些自制的不安全解决方案,以确保在出现错误时不会导入任何数据中途出现。
考虑到我将使用的数据量,我认为MySQL事务不适合此目的。只是为了确定,我测试了它。在导入之前我启动一个事务,总结我提交的导入。在commit语句中,在导入过程中,在几毫秒内平滑地插入20 000+行,而没有任何显着的内存或CPU使用。
我无法绕过它!这是如何运作的?极限在哪里?我浏览了TRANSACTION文档,无法找到有关它如何在发动机罩下运行的任何信息。我当然认为MySQL正在采取一些技巧,我应该注意一下是否适得其反。
我会接受任何答案,并提供有关上段的一些可靠信息
答案 0 :(得分:3)
仅受redo_log_size和您的硬件规格的限制。如果你做大型交易(20.000足够好,但不是几百万个交易并不是闻所未闻的,为了正确看待事物),请确保inno_db_log_file_size = [可接受的文件大小,如256M以上]设置为大足够的数字。
关于优秀mysqlperformanceblog的更多有用信息:http://www.mysqlperformanceblog.com/2009/01/13/some-little-known-facts-about-innodb-insert-buffer/