(轉(zhuǎn))mysql數(shù)據(jù)庫引擎:MyISAM和InnoDB(性能優(yōu)化)-創(chuàng)新互聯(lián)

轉(zhuǎn)自 http://yuwensan126.iteye.com/blog/1138022(轉(zhuǎn))mysql數(shù)據(jù)庫引擎:My
ISAM和InnoDB(性能優(yōu)化)

Mysql 數(shù)據(jù)庫中,最常用的兩種引擎是innordb和myisam。Innordb的功能要比myiasm強(qiáng)大很多,但是innordb的性能要比myisam差很多,如果你的網(wǎng)站只是做簡單的查詢,更新,刪除,那么用myiasm是最好的選擇。

創(chuàng)新互聯(lián)主要業(yè)務(wù)有網(wǎng)站營銷策劃、成都網(wǎng)站制作、成都做網(wǎng)站、微信公眾號開發(fā)、成都小程序開發(fā)HTML5建站、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、全網(wǎng)整合營銷推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。 

所有的性能測試在:Micrisoft window xp sp2 , Intel(R) Pentinum(R) M processor 1.6oGHz 1G 內(nèi)存的電腦上測試。

測試結(jié)果:

測試方法:連續(xù)提交10個query, 表記錄總數(shù):38萬 , 時間單位 s

引擎類型                  Myisam             innordb             性能相差
 count                     0.0008357          3.0163                 3609
 查詢主鍵               0.005708            0.1574                27.57
 查詢非主鍵             24.01                80.37                3.348
 更新主鍵               0.008124             0.8183               100.7
 更新非主鍵             0.004141            0.02625              6.338
 插入                     0.004188             0.3694                88.21

結(jié)論:

1. 加了索引以后,對于Myisam查詢可以加快:4 206.09733倍,對innordb 查詢加快510.72921倍。同時對myisam更新速度減慢為原來的1/2,innordb的更新速度減慢為原來的1/30。大家要看情況決定是否要加索引,比如不查詢的log表,不要做任何的索引。
2. 如果你的數(shù)據(jù)量是百萬級別的,并且沒有任何的事務(wù)處理,那么用myisam是性能最好的選擇。
3. Innordb的表的大小更加的大,用myisam可以省很多的硬盤空間。

在我們測試的這個38w的表中,表占用空間的情況如下:
引擎類型                  MyIsam              InnorDB
 數(shù)據(jù)                      53,924 KB          58,976 KB
 索引                      13,640 KB          21,072 KB
 占用總空間            67,564 KB          80,048 KB

另外一個176W萬記錄的表, 表占用空間的情況如下:

引擎類型              MyIsam            InnorDB
 數(shù)據(jù)                  56,166 KB          90,736 KB
 索引                  67,103 KB         88,848 KB
 占用總空間       123,269 KB        179,584 KB

MyIsam引擎和InnorDB引擎簡介:

MyISAM

   MyISAM是MySQL的ISAM擴(kuò)展格式和缺省的數(shù)據(jù)庫引擎。除了提供ISAM里所沒有的索引和字段管理的大量功能,MyISAM還使用一種表格鎖定的機(jī)制,來優(yōu)化多個并發(fā)的讀寫操作。其代價是你需要經(jīng)常運(yùn)行OPTIMIZE TABLE命令,來恢復(fù)被更新機(jī)制所浪費(fèi)的空間(學(xué)過數(shù)據(jù)結(jié)構(gòu)的都應(yīng)該知道,ISAM文件格式的缺陷)。MyISAM還有一些有用的擴(kuò)展,例如用來修復(fù)數(shù)據(jù)庫文件的MyISAMChk工具和用來恢復(fù)浪費(fèi)空間的MyISAMPack工具。

MyISAM強(qiáng)調(diào)了快速讀取操作,這可能就是為什么MySQL受到了Web開發(fā)如此青睞的主要原因:在Web開發(fā)中你所進(jìn)行的大量數(shù)據(jù)操作都是讀取操作。所以,大多數(shù)虛擬主機(jī)提供商和Internet平臺提供商(Internet Presence Provider,IPP)只允許使用MyISAM格式。 MYISAM格式的一個重要缺陷就是不能在表損壞后恢復(fù)數(shù)據(jù)。

InnorDB

InnoDB數(shù)據(jù)庫引擎都是造就MySQL靈活性的技術(shù)的直接產(chǎn)品,這項(xiàng)技術(shù)就是MySQL++ API。在使用MySQL的時候,你所面對的每一個挑戰(zhàn)幾乎都源于ISAM和MyISAM數(shù)據(jù)庫引擎不支持事務(wù)處理也不支持外來鍵。盡管要比ISAM和 MyISAM引擎慢很多,但是InnoDB包括了對事務(wù)處理和外鍵的支持,這兩點(diǎn)都是前兩個引擎所沒有的。如前所述,如果你的設(shè)計需要這些特性中的一者或者兩者,那你就要被迫使用后兩個引擎中的一個了。

Mysql 官方對InnorDB是這樣解釋的:

   InnoDB給MySQL提供了具有提交,回滾和崩潰恢復(fù)能力的事務(wù)安全(ACID兼容)存儲引擎。InnoDB鎖定在行級并且也在SELECT語句提供一個Oracle風(fēng)格一致的非鎖定讀。這些特色增加了多用戶部署和性能。沒有在InnoDB中擴(kuò)大鎖定的需要,因?yàn)樵贗nnoDB中行級鎖定適合非常小的空間。InnoDB也支持FOREIGN KEY強(qiáng)制。在SQL查詢中,你可以自由地將InnoDB類型的表與其它MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。

InnoDB是為處理巨大數(shù)據(jù)量時的大性能設(shè)計。它的CPU效率可能是任何其它基于磁盤的關(guān)系數(shù)據(jù)庫引擎所不能匹敵的。

   InnoDB存儲引擎被完全與MySQL服務(wù)器整合,InnoDB存儲引擎為在主內(nèi)存中緩存數(shù)據(jù)和索引而維持它自己的緩沖池。InnoDB存儲它的表&索引在一個表空間中,表空間可以包含數(shù)個文件(或原始磁盤分區(qū))。這與MyISAM表不同,比如在MyISAM表中每個表被存在分離的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制為2GB的操作系統(tǒng)上。

   InnoDB默認(rèn)地被包含在MySQL二進(jìn)制分發(fā)中。Windows Essentials installer使InnoDB成為Windows上MySQL的默認(rèn)表。

   InnoDB被用來在眾多需要高性能的大型數(shù)據(jù)庫站點(diǎn)上產(chǎn)生。著名的Internet新聞?wù)军c(diǎn)Slashdot.org運(yùn)行在InnoDB上。 Mytrix, Inc.在InnoDB上存儲超過1TB的數(shù)據(jù),還有一些其它站點(diǎn)在InnoDB上處理平均每秒800次插入/更新的

 mysql 性能優(yōu)化(二)

今天突然看到一年前寫的 mysql 優(yōu)化(一) ,感覺有些誤人子弟。今天再補(bǔ)充一些東西。
關(guān)于引擎選擇,從理論上 和 實(shí)際上 可能會有差距,所以,對待mysql 要有實(shí)驗(yàn)精神。
一般來說,
MYisam 適合:
1. 做很多count 的計算。
2. 插入不平凡,查詢非常頻繁。
3. 沒有事務(wù)

innordb 非常適合:
1. 可靠性要求比較高,或者要求事務(wù)。
2. 表更新和查詢都相當(dāng)?shù)念l繁,并且表鎖定的機(jī)會比較大的情況。

當(dāng)然這也不是絕對的。要試驗(yàn)過才知道。
很多時候,性能瓶頸不是因?yàn)榉?wù)器配置不好,而是因?yàn)镾QL不是很好。SQL的性能優(yōu)化是關(guān)鍵。
除了這些常見的優(yōu)化方法,
   還可以考慮 使用內(nèi)存表。你測試一張myisam 和 內(nèi)存表,會發(fā)現(xiàn)速度差不多。
其實(shí),在并發(fā)比較強(qiáng)的時候,性能會相差大概五倍。我有張經(jīng)常要查詢的IP 地址 和 地區(qū)的 對應(yīng)表,放入內(nèi)存后。
以前查詢 5000個 IP 地址大概 要 15S, 現(xiàn)在,只要 2S多。
很多東西,實(shí)際測試過才知道。用什么壓力測試,測試出來的也不是很準(zhǔn)確。

作者:Angel 出處:http://www.cnblogs.com/wgp13x/ 歡迎轉(zhuǎn)載或分享,但請務(wù)必聲明文章出處。如果文章對您有幫助,希望你能推薦或關(guān)注。

王安琪,英文名Angel,南京郵電大學(xué)計算機(jī)應(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ā),項(xiàng)目經(jīng)理,系統(tǒng)架構(gòu)師,就職于江蘇金陵科技集團(tuán)有限公司。

Email:aitanjupt@hotmail.com

QQ:289770363

當(dāng)前標(biāo)題:(轉(zhuǎn))mysql數(shù)據(jù)庫引擎:MyISAM和InnoDB(性能優(yōu)化)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://muchs.cn/article10/dpcedo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站導(dǎo)航網(wǎng)站設(shè)計公司、定制網(wǎng)站品牌網(wǎng)站設(shè)計、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)