在使用存儲過程進行千萬條數據的插入的時候,插入效率在每分鍾七千條左右,這樣算下來,需要幾十個小時,所以找了一下優化的方法,除了對存儲過程本身的優化,還有就是修改了MySQL的配置文件的部分參數
我做了以下幾個參數的修改
- innodb_log_file_size = 1024M
日志組中的每個日志文件的大小,設置較大的值可以減少臟數據刷新到磁盤的次數
- innodb_log_buffer_size = 256M
將日志寫入日志磁盤文件前的緩沖大小,默認是16M,設置較大的值可以使日志在緩沖時不需要被保存到磁盤,減少磁盤讀取次數
- innodb_flush_log_at_trx_commit = 0
將日志中的緩沖數據寫入磁盤,默認為1,即每次提交事務都會寫入磁盤,改為0后將減少寫入磁盤的次數
- innodb_buffer_pool_size = 4G
該值用來高速緩沖數據和索引內存緩沖大小,也是減少磁盤IO來增加速度,一般設置為物理存儲的60%~70%
- innodb_buffer_pool_instances = 4
增加多個緩沖池,提高並行內存讀寫能力
- innodb_write_io_threads = 8 && innodb_read_io_threads = 8
增加IO線程數,提高讀寫能力,根據機器的處理器來設置
- innodb_io_capacity = 500
提高刷新臟頁數量和合並插入數量,改善磁盤I/O處理能力,默認200
以上參數修改都是通過減少對磁盤的IO操作來實現的,包括關閉了MySQL默認的事務存儲到磁盤的操作,增大緩沖區的容量,這樣子容易造成MySQL服務器宕機的時候,數據大量丟失,建議不要在生產環境下修改這些配置,根據實際情況修改
本文轉自:https://blog.csdn.net/qq_36182135/article/details/84854619