MySQL引擎有哪些

這篇文章主要介紹了MySQL引擎有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司-成都網(wǎng)站建設(shè)公司,專(zhuān)注成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)推廣,申請(qǐng)域名雅安服務(wù)器托管,網(wǎng)站托管有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問(wèn)題,請(qǐng)聯(lián)系成都創(chuàng)新互聯(lián)公司。

 MySQL數(shù) 據(jù)庫(kù)引擎取決于MySQL在安裝的時(shí)候是如何被編譯的。要添加一個(gè)新的引擎,就必須重新編譯MYSQL。在缺省情況下,MYSQL支持三個(gè)引擎:ISAM、MYISAM和HEAP。另外兩種類(lèi)型INNODB和BERKLEY(BDB),也常常可以使用。如果技術(shù)高超,還可以使用MySQL++ API自己做一個(gè)引擎。下面介紹幾種數(shù)據(jù)庫(kù)引擎:

    ISAM:ISAM是一個(gè)定義明確且歷經(jīng)時(shí)間考驗(yàn)的數(shù)據(jù)表格管理方法,它在設(shè)計(jì)之時(shí)就考慮到 數(shù)據(jù)庫(kù)被查詢(xún)的次數(shù)要遠(yuǎn)大于更新的次數(shù)。因此,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內(nèi)存和存儲(chǔ)資源。ISAM的兩個(gè)主要不足之處在于,它不
支持事務(wù)處理,也不能夠容錯(cuò):如果你的硬盤(pán)崩潰了,那么數(shù)據(jù)文件就無(wú)法恢復(fù)了。如果你正在把ISAM用在關(guān)鍵任務(wù)應(yīng)用程序里,那就必須經(jīng)常備份你所有的實(shí) 時(shí)數(shù)據(jù),通過(guò)其復(fù)制特性,MYSQL能夠支持這樣的備份應(yīng)用程序。

    MyISAM:MyISAM是MySQL的ISAM擴(kuò)展格式和缺省的數(shù)據(jù)庫(kù)引擎。除了提供ISAM里所沒(méi)有的索引和字段管理的大量功能,MyISAM還使用一種表格鎖定的機(jī)制,來(lái)優(yōu)化多個(gè)并發(fā)的讀寫(xiě)操作,其代價(jià)是你需要經(jīng)常運(yùn)行OPTIMIZE TABLE命令,來(lái)恢復(fù)被更新機(jī)制所浪費(fèi)的空間。MyISAM還有一些有用的擴(kuò)展,例如用來(lái)修復(fù)數(shù)據(jù)庫(kù)文件的MyISAMCHK工具和用來(lái)恢復(fù)浪費(fèi)空間的
MyISAMPACK工具。MYISAM強(qiáng)調(diào)了快速讀取操作,這可能就是為什么MySQL受到了WEB開(kāi)發(fā)如此青睞的主要原因:在WEB開(kāi)發(fā)中你所進(jìn)行的大量數(shù)據(jù)操作都是讀取操作。所以,大多數(shù)虛擬主機(jī)提供商和INTERNET平臺(tái)提供商只允許使用MYISAM格式。MyISAM格式的一個(gè)重要缺陷就是不能在表?yè)p壞后恢復(fù)數(shù)據(jù)。

    HEAP:HEAP允許只駐留在內(nèi)存里的臨時(shí)表格。駐留在內(nèi)存里讓HEAP要比ISAM和MYISAM都快,但是它所管理的數(shù)據(jù)是不穩(wěn)定的,而且如果在關(guān)機(jī)之前沒(méi)有進(jìn)行保存,那么所有的數(shù)據(jù)都會(huì)丟失。在數(shù)據(jù)行被刪除的時(shí)候,HEAP也不會(huì)浪費(fèi)大量的空間。HEAP表格在你需要使用SELECT表達(dá)式來(lái)選擇和操控?cái)?shù)據(jù)的時(shí)候非常有用。要記住,在用完表格之后就刪除表格。

    InnoDB: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ù)處理(transaction
process)也不支持外來(lái)鍵。盡管要比ISAM和 MyISAM引擎慢很多,但是InnoDB包括了對(duì)事務(wù)處理和外來(lái)鍵的支持,這兩點(diǎn)都是前兩個(gè)引擎所沒(méi)有的。如前所述,如果你的設(shè)計(jì)需要這些特性中的一者 或者兩者,那你就要被迫使用后兩個(gè)引擎中的一個(gè)了。 

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

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

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

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

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

    一般來(lái)說(shuō),MyISAM適合:(1)做很多count 的計(jì)算;(2)插入不頻繁,查詢(xún)非常頻繁;(3)沒(méi)有事務(wù)。InnoDB適合:(1)可靠性要求比較高,或者要求事務(wù);(2)表更新和查詢(xún)都相當(dāng)?shù)念l繁,并且表鎖定的機(jī)會(huì)比較大的情況。

    一般情況下,MySQL會(huì)默認(rèn)提供多種存儲(chǔ)引擎,可以通過(guò)下面的查看:

    (1)看你的MySQL現(xiàn)在已提供什么存儲(chǔ)引擎: mysql> show
engines;

    (2)看你的MySQL當(dāng)前默認(rèn)的存儲(chǔ)引擎: mysql> show variables like '%storage_engine%';

    (3)你要看某個(gè)表用了什么引擎(在顯示結(jié)果里參數(shù)engine后面的就表示該表當(dāng)前用的存儲(chǔ)引擎): mysql> show create table 表名;

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

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

        引擎類(lèi)型                    MyISAM                InnoDB              性能相差

        count                      0.0008357            3.0163                3609

        查詢(xún)主鍵                   0.005708              0.1574                27.57

        查詢(xún)非主鍵                  24.01                   80.37                 3.348

        更新主鍵                   0.008124             0.8183                 100.7

        更新非主鍵                0.004141             0.02625               6.338

        插入                         0.004188             0.3694                 88.21

    (1)加了索引以后,對(duì)于MyISAM查詢(xún)可以加快:4 206.09733倍,對(duì)InnoDB查詢(xún)加快510.72921倍,同時(shí)對(duì)MyISAM更新速度減慢為原來(lái)的1/2,InnoDB的更新速度減慢為原來(lái)的1/30。要看情況決定是否要加索引,比如不查詢(xún)的log表,不要做任何的索引。

    (2)如果你的數(shù)據(jù)量是百萬(wàn)級(jí)別的,并且沒(méi)有任何的事務(wù)處理,那么用MyISAM是性能最好的選擇。

    (3)InnoDB表的大小更加的大,用MyISAM可省很多的硬盤(pán)空間。

        在我們測(cè)試的這個(gè)38w的表中,表占用空間的情況如下:
            引擎類(lèi)型                    MyISAM               InnoDB
            數(shù)據(jù)                       53,924 KB           58,976 KB
            索引                       13,640 KB           21,072 KB
            占用總空間              67,564 KB           80,048 KB
 
        另外一個(gè)176W萬(wàn)記錄的表, 表占用空間的情況如下:

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

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MySQL引擎有哪些”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

網(wǎng)站名稱(chēng):MySQL引擎有哪些
鏈接分享:http://bm7419.com/article46/jdeceg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航做網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)