MySQL儲存過程插入資料過慢處理方法

2021-09-02 18:21:45 字數 567 閱讀 2718

在使用儲存過程進行千萬條資料的插入的時候,插入效率在每分鐘七千條左右,這樣算下來,需要幾十個小時,所以找了一下優化的方法,除了對儲存過程本身的優化,還有就是修改了mysql的配置檔案的部分引數

我做了以下幾個引數的修改

日誌組中的每個日誌檔案的大小,設定較大的值可以減少髒資料重新整理到磁碟的次數

將日誌寫入日誌磁碟檔案前的緩衝大小,預設是16m,設定較大的值可以使日誌在緩衝時不需要被儲存到磁碟,減少磁碟讀取次數

將日誌中的緩衝資料寫入磁碟,預設為1,即每次提交事務都會寫入磁碟,改為0後將減少寫入磁碟的次數

該值用來高速緩衝資料和索引記憶體緩衝大小,也是減少磁碟io來增加速度,一般設定為物理儲存的60%~70%

增加多個緩衝池,提高並行記憶體讀寫能力

增加io執行緒數,提高讀寫能力,根據機器的處理器來設定

提高重新整理髒頁數量和合併插入數量,改善磁碟i/o處理能力,預設200

以上引數修改都是通過減少對磁碟的io操作來實現的,包括關閉了mysql預設的事務儲存到磁碟的操作,增大緩衝區的容量,這樣子容易造成mysql伺服器宕機的時候,資料大量丟失,建議不要在生產環境下修改這些配置,根據實際情況修改

MySql批量插入資料 儲存過程

批量插入儲存過程 create procedure auto insert in indexs int,in loops int begin declare v sql longtext set v sql insert into t info name,time values while inde...

mysql 儲存過程 插入大量資料

需求 測試sql語句的效能,在資料庫中插入10萬條資料用於測試。delimiter drop procedure if exists kxc create procedure kxc begin declare i int set i 0 start transaction while i 1000...

mysql利用儲存過程批量插入資料

最近需要測試一下mysql單錶資料達到1000w條以上時增刪改查的效能。由於沒有現成的資料,因此自己構造,本文只是例項,以及簡單的介紹。首先當然是建表 create table fortest id int 30 unsigned not null auto increment primary ke...