mysqldump導出數據時,如何調整每一個insert語句的values值的數量?

當咱們對一個包含1千萬行記錄的表history執行導出時,假設只用的備份語句以下:mysql

  #mysqldump -uroot -p'123456'  --set-gtid-purged=OFF tdb history>history.sqlsql

當咱們執行表的恢復時,執行以下語句:測試

mysql> source history.sqlspa

。。。文檔

Query OK, 0 rows affected (0.01 sec)class

Query OK, 27893 rows affected (1.78 sec)
Records: 27893 Duplicates: 0 Warnings: 0效率

Query OK, 27961 rows affected (0.46 sec)
Records: 27961 Duplicates: 0 Warnings: 0方法

。。數據

咱們發現,每次只能插入2.7萬條左右的記錄,經過修改MySQL variables參數,可能會更改插入效率。但每次insert的值沒法改變。後來研究備份文件內容發現,margin

每一個insert語句後面的values值大約就在2.7萬左右。不是一條insert語句把全部values都插入的。那若是我想更改mysqldump導出時每一個insert語句的values值的數量,該如何操做呢?

方法以下:

  # mysqldump -uroot -p'123456' --net-buffer-length=2046528 --set-gtid-purged=OFF tdb history>history.sql

經過修改--net-buffer-length的值來實現。默認值爲1046528。而mysqld中該參數的默認值爲16384。

修改後,我發現每一個insert語句的values值,能夠高達5.4萬左右。

問題:是否是這個值調的越高越好呢?

通過測試發現:

一、調高後,備份速度明顯快不少。

二、但恢復數據時,因爲須要對錶進行加鎖,因此加鎖時間也會邊長。

這個要權衡利弊進行設置。

參考文檔:

一、極客時間《MySQL實戰45講》:41 如何快速複製一張表?

相關文章
相關標籤/搜索