MySQL 數據庫插入速度調整

 由於項目變態需求;需要在一個比較短時間段急劇增加數據庫記錄(兩三天內,由於0增加至4億)。在整個過程調優過程非常艱辛。

       MySQL 從最開始的時候 1000條/分鐘的插入速度調高至 10000條/秒。 相信大家都已經等急了相關介紹,下面我做調優時候的整個過程。提高數據庫插入性能中心思想:

      1、儘量使數據庫一次性寫入Data File

      2、減少數據庫的checkpoint 操作

      3、程序上儘量緩衝數據,進行批量式插入與提交

      4、減少系統的IO衝突

      根據以上四點內容,作爲一個業餘DBA對MySQL服務進行了下面調整:

  1. 修改負責收錄記錄MySQL服務器配置,提升MySQL整體寫速度;具體爲下面三個數據庫變量值:innodb_autoextend_increment、innodb_log_buffer_size、innodb_log_file_size;此三個變量默認值分別爲 5M、8M、8M,根據服務器內存大小與具體使用情況,將此三隻分別修改爲:128M、16M、128M。同時,也將原來2個 Log File 變更爲 8 個Log File。此次修改主要滿足第一和第二點,如:增加innodb_autoextend_increment就是爲了避免由於頻繁自動擴展Data File而導致 MySQL 的checkpoint 操作;
  2. 將大表轉變爲獨立表空並且進行分區,然後將不同分區下掛在多個不同硬盤陣列中。

 

完成了以上修改操作後;我看到下面幸福結果:

獲取測試結果:
Query OK, 2500000 rows affected (4 min 4.85 sec)

Records: 2500000 Duplicates: 0  Warnings: 0 

 
Query OK, 2500000 rows affected (4 min 58.89 sec)

Records: 2500000 Duplicates: 0  Warnings: 0 

 
Query OK, 2500000 rows affected (5 min 25.91 sec)

Records: 2500000 Duplicates: 0  Warnings: 0 

 
Query OK, 2500000 rows affected (5 min 22.32 sec)

Records: 2500000 Duplicates: 0  Warnings: 0 

 
最後表的數據量: 
+------------+ 
| count(*)  | 
+------------+ 
|  10000000| 

+------------+

從上面結果來看,數據量增加會對插入性能有一定影響。不過,整體速度還是非常面議。一天不到時間,就可以完成4億數據正常處理。預計數據庫瓶頸已經被巧妙解決,結果變成程序“猿”苦逼地向我埋怨,大哥不用這麼狠啊。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章