Mysql insert 資料效能測試

來源:互聯網
上載者:User

前些時候對Mysql做了些測試,得到了一些測試資料。網上看到一些Mysql相關總結,並不能一味相信,還是需要看資料說話。

下面的測試案例都是插入1千萬條資料,分別對三種類型的資料表類型進行測試(MYISAM,INNODB,NDB),測試案例是:

NDB是官方的叢集部署版本,測試資料是基於6.x。Mysql proxy也是官方的,用的好像是0.8.x版本,做過負載平衡,讀寫分離測試,負載平衡比較穩定,但是讀寫分離在多線程下則非常不穩定。
1.MYISAM類型資料表的單線程
2.INNODB類型資料表的單線程,開啟innodb_flush_log_at_trx_commit
3.INNODB類型資料表的單線程,關閉innodb_flush_log_at_trx_commit
4.MYISAM 100線程、100串連池
5.INNODB 100線程、100串連池,NO LOG
6.MYISAM 1000線程、1000線程池
7.INNODB 1000線程、1000線程池
8.NDB類型資料表(3NODE、3份冗餘),單線程, 使用Mysql proxy負載平衡
9.NDB(3NODE、3冗餘),100線程,100串連池,使用Mysql proxy
10.NDB(3NODE、3冗餘),1000線程,1000串連池,使用Mysql proxy


測試結果總結:

•橫座標為資料量,縱座標為時間,單位毫秒。用來泡測試案例的機器效能比較次,開啟2000個線程後就跑不動了。
•測試案例並沒有用到事務,所有測試Insert內容為 10個varchar(255)欄位,插入內容為10個32位的 uuid,除了主鍵沒有建立其它索引。
•測試都是跑在虛擬機器上的,NDB類型由於考慮虛機共用網卡和CPU原因,是三台獨立的宿主機。
•MYISAM在壓力測試下優勢非常明顯,最下面一條線是100線程的,僅次於的是1000線程的,而且效能基本是線性。

•INNODB測試首先要看  innodb_flush_log_at_trx_commit 這個條件,開啟log的效能在單線程下差點墊底。
•INNODB在關閉Log後,效能倒是可以接受,但是大壓力下效能有明顯的下降,且稱不上線性。
•NDB資料時放在記憶體中的,再加上設定了3分冗餘量,預設配置的記憶體很快就被消耗乾淨了,需要手動設定一下使用記憶體大小。目測資料冗餘的建立是同步的。
•NDB資料由雩都是放在記憶體中的,原以為測試效能不會太差。NDB在單線程下則是墊底的,可能Proxy對效能有一定的影響,不過好訊息是100線程和1000線程在圖上的表現基本是重合的。


Mysql相關的技術非常豐富,五花八門,基本上我能想到的網上都能找到相關方案。但是在雲端運算時代,可能需要顧及向下相容,則沒有特別的方案能解決資料一致性、高負載、冗餘災備和海量資料等問題。從insert來看,用MongoDB測試了單線程下的1千萬資料,速度是Mysql的3倍,基於儲存原理(MongoDB將索引放在記憶體中)估計select效能差距會更大。越來越多的非關係型資料庫在這些方面越來越成熟,Mysql的優勢基本只剩下事務支援了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.