因爲項目變態需求;須要在一個比較短期段急劇增長數據庫記錄(兩三天內,因爲0增長至4億)。在整個過程調優過程很是艱辛。數據庫
MySQL 從最開始的時候 1000條/分鐘的插入速度調高至 10000條/秒。 相信你們都已經等急了相關介紹,下面我作調優時候的整個過程。提升數據庫插入性能中心思想:服務器
一、儘可能使數據庫一次性寫入Data File性能
二、減小數據庫的checkpoint 操做測試
三、程序上儘可能緩衝數據,進行批量式插入與提交spa
四、減小系統的IO衝突內存
根據以上四點內容,做爲一個業餘DBA對MySQL服務進行了下面調整:rem
- 修改負責收錄記錄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 操做;
- 將大表轉變爲獨立表空而且進行分區,而後將不一樣分區下掛在多個不一樣硬盤陣列中。
完成了以上修改操做後;我看到下面幸福結果: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億數據正常處理。預計數據庫瓶頸已經被巧妙解決,結果變成程序「猿」苦逼地向我埋怨,大哥不用這麼狠啊。擴展