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

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

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

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

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

測(cè)試結(jié)果:

測(cè)試方法:連續(xù)提交10個(gè)query, 表記錄總數(shù):38萬(wàn) , 時(shí)間單位 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. 加了索引以后,對(duì)于Myisam查詢可以加快:4 206.09733倍,對(duì)innordb 查詢加快510.72921倍。同時(shí)對(duì)myisam更新速度減慢為原來的1/2,innordb的更新速度減慢為原來的1/30。大家要看情況決定是否要加索引,比如不查詢的log表,不要做任何的索引。
2. 如果你的數(shù)據(jù)量是百萬(wàn)級(jí)別的,并且沒有任何的事務(wù)處理,那么用myisam是性能最好的選擇。
3. Innordb的表的大小更加的大,用myisam可以省很多的硬盤空間。

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

另外一個(gè)176W萬(wàn)記錄的表, 表占用空間的情況如下:

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

MyIsam引擎和InnorDB引擎簡(jiǎn)介:

MyISAM

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

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

InnorDB

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

Mysql 官方對(duì)InnorDB是這樣解釋的:

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

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

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

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

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

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

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

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

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

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

王安琪,英文名Angel,南京郵電大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)碩士學(xué)位。 熟悉Java、C#編程語(yǔ)言。專注于WebService、海量數(shù)據(jù)處理、搜索引擎技術(shù)、消息中間件技術(shù)、分布式文件存儲(chǔ)、.NET應(yīng)用程序開發(fā)、系統(tǒng)架構(gòu)設(shè)計(jì)。主要從事大數(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ù)庫(kù)引擎:MyISAM和InnoDB(性能優(yōu)化)-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://bm7419.com/article10/dpcedo.html

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

廣告

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

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