mysqldump的-- extended -insert选项对1024条语句进行分组,然后使用另一个扩展insert,是否有特定的范围。
我的表在转储数据时有超过1000万行,我没有更改允许的最大数据包大小(设置为100 MB ),并且我的表大小超过10 GB
发布于 2013-04-08 19:36:00
我认为您正在寻找--net_buffer_length和/或--max_allowed_packet。它们是常规客户端设置,但它们控制每个包的大小,即使对于mysqldump也是如此。
发布于 2015-06-01 23:59:09
我知道这有点过时,但如果有人再次陷入困境,这将会帮助他。这里的问题是,mysql引擎在执行mysqldump命令后将缓冲RAM中的所有表,并在完成后写入磁盘。当表的缓存大于服务器RAM的大小时,我们就会遇到问题。为了桥接使用--选项(例如: mysqldump -h sitename.com -u根数据库-x --所有数据库-->-x),它将直接写入磁盘。除了选项名称之外,此选项并不比带缓冲区的BU更快。
发布于 2014-06-13 23:22:40
我最近遇到了同样的问题,我用--opt导出了1.1 it的数据库,但是有很多记录,导入速度非常慢,我离开了一夜,第二天早上它还在导入,所以我决定停下来重新开始。
我发现这对https://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html有很大帮助
我进入mysql shell并运行:
mysql> SET autocommit=0;
mysql> SET unique_checks=0;
mysql> SET foreign_key_checks=0;
mysql> SOURCE my_database.sql;并开始看到:
Query OK, 12315 rows affected (0.34 sec)
Records: 12315 Duplicates: 0 Warnings: 0等等。基本上每秒大约运行36k次插入,但超时速度确实变慢了。
Query OK, 12305 rows affected (1.68 sec)
Records: 12305 Duplicates: 0 Warnings: 0解释很简单,自动提交本质上是在每次插入时刷新到磁盘,即使使用--extended-insert (默认情况下是用--opt打开),但禁用它将在提交到磁盘之前对尽可能多的记录进行分组,因此我能够在刷新之前对大约12000条记录进行分组,其他选项禁用了键检查以提高性能。
按照这个速度,我能够在半小时内导入1300万条记录,甚至更少,我没有检查:)
https://stackoverflow.com/questions/15877849
复制相似问题