亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中怎么實現快速插入數據

發布時間:2021-07-24 16:25:38 來源:億速云 閱讀:252 作者:Leah 欄目:數據庫

MySQL中怎么實現快速插入數據,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

  MySQL如何快速插入數據

  1.盡量減小導入文件大小

  首先給個建議,導出導入數據盡量使用MySQL自帶的命令行工具,不要使用Navicat、workbench等圖形化工具。特別是大數據量的時候,用MySQL自帶的命令行工具導出和導入比用Navicat等圖形化工具要快數倍,而且用Navicat等圖形化工具做大數據量的操作時很容易卡死。下面簡單介紹下怎么用MySQL自帶的命令行工具做導入導出。

  #導出整個實例

  mysqldump-uroot-pxxxxxx--all-databases>all_database.sql

  #導出指定庫

  mysqldump-uroot-pxxxxxx--databasestestdb>testdb.sql

  #導出指定表

  mysqldump-uroot-pxxxxxxtestdbtest_tb>test_tb.sql

  #導入指定SQL文件(指定導入testdb庫中)

  mysql-uroot-pxxxxxxtestdb

  導入的SQL腳本內容大多是先建庫建表,然后插入數據,其中耗時最長的應該是insert插入數據了。為了減小文件大小,推薦使用擴展插入方法,即多行一起批量insert,類似這樣:insertintotable_namevalues(),(),(),...,();。使用擴展插入比一條條插入,文件大小要小很多,插入速度要快好幾倍。使用mysqldump導出的文件默認是使用批量插入的方法,導出時可使用--skip-extended-insert參數改為逐條插入。

  可以看出,使用擴展插入的SQL腳本導入大概需要10分鐘左右,而一條條插入的SQL腳本導入時間過長,大概1個小時仍然沒有導完,一個2個多G的文本導入一個多小時仍未結束,等不及的筆者就手動取消了不過還是可以看出多條一起insert比一條條插入數據要節省數倍的時間。

  2.嘗試修改參數加快導入速度

  在MySQL中,有一對大名鼎鼎的“雙一”參數,即innodb_flush_log_at_trx_commit與sync_binlog。為了安全性這兩個參數默認值為1,為了快速導入腳本,我們可以臨時修改下這兩個參數,下面簡單介紹下這兩個參數:

  innodb_flush_log_at_trx_commit默認值為1,可設置為0、1、2

  如果innodb_flush_log_at_trx_commit設置為0,logbuffer將每秒一次地寫入logfile中,并且logfile的flush(刷到磁盤)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁盤的操作。如果innodb_flush_log_at_trx_commit設置為1,每次事務提交時MySQL都會把logbuffer的數據寫入logfile,并且flush(刷到磁盤)中去.如果innodb_flush_log_at_trx_commit設置為2,每次事務提交時MySQL都會把logbuffer的數據寫入logfile.但是flush(刷到磁盤)操作并不會同時進行。該模式下,MySQL會每秒執行一次flush(刷到磁盤)操作。

  sync_binlog默認值為1,可設置為[0,N)

  當sync_binlog=0,像操作系統刷其他文件的機制一樣,MySQL不會同步到磁盤中去而是依賴操作系統來刷新binarylog。當sync_binlog=N(N>0),MySQL在每寫N次二進制日志binarylog時,會使用fdatasync()函數將它的寫二進制日志binarylog同步到磁盤中去。

  MySQL如何快速插入數據

  這兩個參數可以在線修改,若想快速導入,可以按照下面步驟來操作:

  #1.進入MySQL命令行臨時修改這兩個參數

  setglobalinnodb_flush_log_at_trx_commit=2;

  setglobalsync_binlog=2000;

  #2.執行SQL腳本導入

  mysql-uroot-pxxxxxxtestdb

  #3.導入完成再把參數改回來

  setglobalinnodb_flush_log_at_trx_commit=1;

  setglobalsync_binlog=1;

  還有另外一種場景是你的需求是新建從庫,或者是不需要產生binlog,這時候導入SQL腳本時可以設置暫時不記錄binlog,可以在腳本開頭增加setsql_log_bin=0;然后再執行導入,這樣速度會進一步加快。如果你的MySQL實例沒有開啟binlog則不需要再執行該語句了。

關于MySQL中怎么實現快速插入數據問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

漳浦县| 马龙县| 南通市| 长垣县| 兴仁县| 永登县| 诏安县| 灵石县| 吉林省| 湄潭县| 沈阳市| 比如县| 常山县| 慈利县| 灵石县| 上高县| 拉孜县| 云霄县| 呼玛县| 恩施市| 台江县| 青铜峡市| 高密市| 沿河| 于田县| 台中市| 永福县| 封开县| 罗平县| 湄潭县| 克什克腾旗| 札达县| 高雄市| 阜平县| 陈巴尔虎旗| 乌兰浩特市| 太仓市| 陵川县| 德保县| 大悟县| 霸州市|