MySQL匯入大資料量sql檔案
阿新 • • 發佈:2022-05-31
MySQL匯入資料的方式有多種
- 使用工具匯入sql檔案 : 匯入檔案不大的時候使用方便
- 終端使用命令匯入 :匯入檔案很大的時候使用
- 資料庫內使用source匯入 : 匯入檔案很大的時候使用
ps: 第二和第三種方法沒有進行比較,這裡主要介紹第二種方法
臨時修改引數
innodb_flush_log_at_trx_commit 這個引數預設是 1 ,可設定為0、1、2
- innodb_flush_log_at_trx_commit 設定為 0,log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁碟)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁碟的操作。
- innodb_flush_log_at_trx_commit設定為 1,每次事務提交時MySQL都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中去。
- innodb_flush_log_at_trx_commit設定為 2,每次事務提交時MySQL都會把log buffer的資料寫入log file.但是flush(刷到磁碟)操作並不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁碟)操作。
sync_binlog sync_binlog預設值為1,可設定為[0,N)
- 當 sync_binlog =0,像作業系統刷其他檔案的機制一樣,MySQL不會同步到磁碟中去而是依賴作業系統來重新整理binary log。
- 當 sync_binlog =N (N>0) ,MySQL 在每寫 N次 二進位制日誌binary log時,會使用fdatasync()函式將它的寫二進位制日誌binary log同步到磁碟中去。
# 1.進入MySQL命令列,臨時修改這兩個引數 mysql -uroot -p # 2.修改引數 set global innodb_flush_log_at_trx_commit = 2; set global sync_binlog = 2000; # 3.退出命令列 exit # 4.匯入資料庫檔案 mysql -uroot -ppassword testdb < testdb.sql # 5.匯入成功之後,再把引數修改回去 set global innodb_flush_log_at_trx_commit = 1; set global sync_binlog = 1;