MySQL Innodb 插入速率最佳化

來源:互聯網
上載者:User

標籤:

批量【更新/插入】百萬以上資料時,每次2w條,超過10w條以後效率線性下降。參考本文設定效果不明顯,原因可能是因為索引的問題。 繼續查。不過此文品質不錯。

==============================


MySQL 從最開始的時候 1000條/分鐘的插入速度調高至 10000條/秒。 相信大家都已經等急了相關介紹,下面我做調優時候的整個過程。提高資料庫插入效能中心思想: 
1、盡量使資料庫一次性寫入Data File 
2、減少資料庫的checkpoint 操作 
3、程式上盡量緩衝資料,進行批量式插入與提交 
4、減少系統的IO衝突

根據以上四點內容,作為一個業餘DBA對MySQL服務進行了下面調整: 
修改負責收錄記錄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 操作; 
將大錶轉變為獨立表空並且進行分區,然後將不同分區下掛在多個不同硬碟陣列中。

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

擷取測試結果: 
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億資料正常處理。預計資料庫瓶頸已經被巧妙解決,結果變成程式“猿”苦逼地向我埋怨,大哥不用這麼狠啊。


MySQL Innodb 插入速率最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.