MySQL導出的SQL語句在導入時有可能會非常非常慢,經歷過導入僅45萬條記錄,竟用了近3個小時。在導出時合理使用幾個參數,可以大大加快導入的速度。
-e 使用包括幾個VALUES列表的多行INSERT語法;
--max_allowed_packet=XXX 客戶端/服務器之間通信的緩存區的最大大小;
--net_buffer_length=XXX TCP/IP和套接字通信緩沖區大小,創建長度達net_buffer_length的行
注意:max_allowed_packet和net_buffer_length不能比目標數據庫的配置數值大,否則可能出錯。
首先確定目標庫的參數值
mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';
根據參數值書寫mysqldump命令,如:
mysql>mysqldump -uroot -p 數據庫名 -e --max_allowed_packet=1048576 --net_buffer_length=16384 > SQL文件
如:
mysql>mysqldump -uroot -p discuz -e --max_allowed_packet=1048576 --net_buffer_length=16384 > discuz.sql
之前2小時才能導入的sql現在幾十秒就可以完成了。
建立索引后 插入大量數據回很慢 解決辦法就是在插入大量數據之前先不要索引或刪除索引,然后再建立索引。
建立索引后 插入大量數據回很慢 解決辦法就是在插入大量數據之前先不要索引或刪除索引,然后再建立索引。
