1

我正在开展一个项目,其中大量导入,在我的情况下意味着大约 20 000 行和 20 列数据,并且正在计划一些自制的不安全解决方案,以确保如果中途出现错误不会导入任何数据。

考虑到我将使用的数据量,我认为 MySQL 事务不适合此目的。只是为了确定,我测试了它。在导入之前我开始一个事务,完成导入我提交它。在提交语句中,20 000+ 行在几毫秒内顺利插入到表中,在导入期间没有任何显着的内存或 CPU 使用。

我无法围绕它来思考!这是如何运作的?极限在哪里?我浏览了 TRANSACTION 文档,找不到任何关于它如何在引擎盖下运行的信息。我在想 MySQL 肯定在使用一些技巧,我应该注意以防适得其反。

我会接受任何关于上述段落的可靠信息的答案

4

1 回答 1

3

仅受 redo_log_size 的限制,当然还有您的硬件规格。如果您进行大型事务(20.000 足够体面,但并非闻所未闻的几百万个事务,从长远来看),请确保将 inno_db_log_file_size=[accepptable file size, like 256M of more] 设置为大数量足够。

有关优秀 mysqlperformanceblog 的更多有用信息:http ://www.mysqlperformanceblog.com/2009/01/13/some-little-known-facts-about-innodb-insert-buffer/

于 2012-06-18T07:15:51.017 回答