解決mysql匯入資料過慢問題

2021-10-02 04:56:50 字數 1115 閱讀 9597

目前遇到乙個問題,mysql使用source命令匯入 *.sql 資料檔案時,執行的很慢,大概一秒鐘插入個一兩百條左右的樣子,對於大的檔案來說這個太慢了,從其他博主那邊蒐集了一些方案,簡單說就是一句話:set global innodb_flush_log_at_trx_commit = 2;

1.登入mysql

mysql -uroot -p***
2.檢視mysql中對於引數 innodb_flush_log_at_trx_commit 的配置

show global variables where variable_name = 'innodb_flush_log_at_trx_commit';
3.修改

set global innodb_flush_log_at_trx_commit = 2;
修改完成後在次執行相同的檔案,200m大約200w+條的資料在1分鐘左右。

對於該引數的不同值的說明:

1.innodb_flush_log_at_trx_commit引數為 0

binlog_group_flush && thd_flush_log_at_trx_commit(null) == 0 條件成立,因此直接return了,那麼這種情況下log_buffer_flush_to_disk函式不會呼叫,因此不會做redo刷盤。依賴master執行緒。

2.innodb_flush_log_at_trx_commit引數為 1

!binlog_group_flush|| thd_flush_log_at_trx_commit(null) == 1 返回為1即為true,因此呼叫log_buffer_flush_to_disk(true),因此需要做redo刷盤,也要做sync。

3.innodb_flush_log_at_trx_commit引數為 2

!binlog_group_flush|| thd_flush_log_at_trx_commit(null) == 1 返回為0即為flase,因此呼叫log_buffer_flush_to_disk(flase),因此需要做redo刷盤,不做sync。依賴os的刷盤機制。

Mysql匯入過大sql檔案過慢問題解決

首先需要改動下mysql的配置,這個也是我自己在網上找的,我感覺網上的比較亂,所以自己就整理了一下,也是對自己遇到問題的乙個記錄吧!1.改動mysql配置的語句 然後執行之後重新啟動mysql服務。2.然後採用dos命令列的方法執行sql檔案,先進入mysql執行環境,選擇資料庫 我的資料庫已經在電...

Mysql 過大sql檔案匯入過慢問題解決

控制 mysql 磁碟寫入策略 以及 資料安全性 的兩個關鍵引數 innodb flush log at trx commit和sync binlog 引數 innodb flush log at trx commit 如果設定為0,log buffer將每秒一次地寫入log file中,並且同時進...

解決mysql匯入匯出資料亂碼問題

2013 04 03 22 56 51 最近在linux上面用mysqldump匯出資料,放在windows系統中匯入就會出現中文亂碼,然後就會導致出現 unknown mysql server host和can t connect to the server的錯誤。最近在linux上面用mysql...