MySQL 數據庫插入速度調整

      因爲項目變態需求;須要在一個比較短期段急劇增長數據庫記錄(兩三天內,因爲0增長至4億)。在整個過程調優過程很是艱辛。數據庫

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

      一、儘可能使數據庫一次性寫入Data File性能

      二、減小數據庫的checkpoint 操做測試

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

      四、減小系統的IO衝突內存

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

  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. 將大表轉變爲獨立表空而且進行分區,而後將不一樣分區下掛在多個不一樣硬盤陣列中。

 

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

獲取測試結果:
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億數據正常處理。預計數據庫瓶頸已經被巧妙解決,結果變成程序「猿」苦逼地向我埋怨,大哥不用這麼狠啊。擴展

相關文章
相關標籤/搜索