mysql在5.0之后,差距不是很大
北關(guān)網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。http://passover.blog.51cto.com/2431658/507265
http://blog.csdn.net/cchaha/article/details/1782723
http://www.taobaodba.com/
由于近期有個項目對系統(tǒng)性能要求很高,技術(shù)選型上由于種種原因已經(jīng)確定使用Mysql數(shù)據(jù)庫,接下來就是要確定到底使用哪種存儲引擎。我們的應(yīng)用是典型的寫多讀少,寫入內(nèi)容為也很短,對系統(tǒng)的穩(wěn)定性要求很高。所以存儲引擎肯定就定在廣泛使用的Innodb和MyISAM之中了。
至于兩者的比較網(wǎng)上也有很多,但是畢竟這個事情也不復(fù)雜,決定還是自己來做,去驗證一下在我們的場景下誰更優(yōu)。
測試的版本是mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686),使用的是Innodb plugin 1.0.8(官方稱比built-in版本性能更好)和默認的MyISAM。
測試機器是我的筆記本,配置如下:Intel 酷睿2雙核 P8600,2G*2 DDR3 1066內(nèi)存,320G硬盤5400轉(zhuǎn)。
測試一:數(shù)據(jù)插入性能測試,這里我分別對innodb_flush_log_at_trx_commit參數(shù)打開和關(guān)閉都測了了一下,每次測試都是運行40s,表中數(shù)字都是實際插入條數(shù)。
MyISAM Innodb (打開) Innodb (關(guān)閉)
單線程,逐個插入 120000 60000 60000
4線程,逐個插入 40000*4 20000*4 40000*4
單線程,批量100條/次插入 3600*100 800*100 3000*100
單線程,批量200條/次插入 1800*200 400*200 1600*200
可以發(fā)現(xiàn)批量插入的性能遠高于單條插入,但是一次批量的大小對性能影響不大。每條記錄是否都刷新日志的參數(shù)對innodb性能的影響巨大??傮w上來說,MyISAM性能更優(yōu)一點。這里有一點需要注意,在插入測試過程中,我對系統(tǒng)資源進行了監(jiān)控,發(fā)現(xiàn)MyISAM對系統(tǒng)資源占用很低,但是Innodb對磁盤占用卻很高,應(yīng)該是對事務(wù)控制多了很多需要記錄的日志。
測試二:數(shù)據(jù)讀取性能測試。每次隨機讀取1000條記錄,反復(fù)進行讀取。
MyISAM Innodb
單線程,200次讀取 5.7s 16.7s
4線程,200次讀取 12s 40.8s
可以看出MyISAM的讀取性能非??植溃阅懿罹嘣?倍的樣子。
以上兩個測試發(fā)現(xiàn)MyISAM在無事務(wù)的需求下幾乎完勝,但是要知道它是表鎖,Innodb是行鎖,那么在并發(fā)讀寫同時存在的情況下,那結(jié)果會是怎么樣呢?!
測試三:兩個線程并發(fā)寫入,2個線程并發(fā)讀取。
MyISAM Innodb
逐個插入 寫入40s:10000*2 讀取200次*2:14s 寫入40s:60000*2 讀取200次*2:50s
批量100條/次插入 寫入40s:1000*100*2 讀取200次*2:10s 寫入40s:1500*100*2 讀取200次*2:50s
這下立刻顯示出Innodb在并發(fā)情況下強勁的性能,幾乎沒有什么性能衰減。而MyISAM單條插入速度變得非常慢,批量插入也下降了40%性能。
總結(jié)一下,在寫多讀少的應(yīng)用中還是Innodb插入性能更穩(wěn)定,在并發(fā)情況下也能基本,如果是對讀取速度要求比較快的應(yīng)用還是選MyISAM。
另外提一下,這里需要用到對Innodb的熱備份,除了用Master-Slave的方式,還可以選用XtraBackup這個開源軟件。
作者:Angel 出處:http://www.cnblogs.com/wgp13x/ 歡迎轉(zhuǎn)載或分享,但請務(wù)必聲明文章出處。如果文章對您有幫助,希望你能推薦或關(guān)注。王安琪,英文名Angel,南京郵電大學(xué)計算機應(yīng)用技術(shù)碩士學(xué)位。 熟悉Java、C#編程語言。專注于WebService、海量數(shù)據(jù)處理、搜索引擎技術(shù)、消息中間件技術(shù)、分布式文件存儲、.NET應(yīng)用程序開發(fā)、系統(tǒng)架構(gòu)設(shè)計。主要從事大數(shù)據(jù)管理系統(tǒng)的研發(fā),項目經(jīng)理,系統(tǒng)架構(gòu)師,就職于江蘇金陵科技集團有限公司。
Email:aitanjupt@hotmail.com
QQ:289770363