HeidiSQL、Navicat、mysql命令和source命令導入sql腳本的速度比較
- 2019 年 10 月 20 日
- 筆記
一、四種導入方式的比較
1、heidisql客戶端是一條一條插入的,速度最慢,而且很脆弱比較容易崩潰;
2、mysql命令導入380萬記錄用時1小時13分(屬於前台運行的命令,ctrl+c就可以結束);
3、source命令導入的速度和mysql命令導入差不多(進入mysql命令介面,ctrl+c結束不了,關閉xshell也結束不了,需要kill進程)。想看這個進程運行了多長時間,命令:ps -eo pid,lstart,etime|grep 進程號;
4、navicat客戶端導入11.1G(大概38408601條記錄)的sql腳本用了37分鐘左右
15點49導入11.9G的sql腳本,16點29結束,耗時2419s,總43829483條記錄
380萬記錄(204s≈3.4分鐘)
4383萬記錄(2419s≈40.32分鐘)
二、結束source命令導入的方法
在使用source命令導入時,由於速度太慢,我想結束掉,關閉了xshell客戶端,在navicat客戶端看進程,還是有在後台繼續導入,數據也在增加,試圖通過客戶端kill掉這個進程,發現還是在繼續導入。於是登錄linux,ps -ef | grep mysql 發現連接mysql命令還在,於是kill掉之後,就停止數據導入了。

擴展知識:
kill 命令很容易讓人產生誤解,以為它僅僅就是用來殺死進程的。我們來看一下 man page 對它的解釋:kill – send a signal to a process.
從官方的解釋不難看出,kill 是向進程發送訊號的命令。當然我們可以向進程發送一個終止運行的訊號,此時的 kill 命令才是名至實歸。事實上如果我們不給 kill 命令傳遞訊號參數,它默認傳遞終止進程運行的訊號給進程!這是 kill 命令最主要的用法,也是本文要介紹的內容。
一般情況下,終止一個前台進程使用 Ctrl + C 就可以了。對於一個後台進程就須用 kill 命令來終止。我們會先使用 ps、top 等命令獲得進程的 PID,然後使用 kill 命令來殺掉該進程。
一般來說,只要記住 “1, 9, 15” 這三個訊號的意義就可以了
常用命令
$ kill –15 pid
這條命令發訊號讓進程正常退出。所謂的正常退出是指按應用程式自己的退出流程完成退出,這樣就可以清理並釋放資源。比如 vim 程式,如果是正常的退出,就會刪除掉臨時文件 *.swp。
既然訊號 15 是退出進程的正確方式,那它也應該是最常用的方式,因而我們可以省略參數 -15。
$ kill pid
這條命令和上面的命令是等價的,kill 命令默認發送訊號 15 給目標進程。
當進程出現了異常狀況,不能通過訊號15正常退出時,我們就需要通過非常的手段直接終結掉進程。所謂的非常手段就是傳遞訊號 9 給目標進程!
$ kill –9 pid
這樣結束掉的進程不會進行資源的清理工作,所以如果你用它來終結掉 vim 的進程,就會發現臨時文件 *.swp 沒有被刪除。