面試官:你用過mysql哪些存儲引擎,請分別展開說一下

歡迎關(guān)注專欄:后端架構(gòu)技術(shù)精選。里面有大量關(guān)于的Java高級架構(gòu)知識點分享,還有各種面試趣聞以及程序員身邊事,如有好文章也歡迎投稿哦。

mysql

這是高級開發(fā)者面試時經(jīng)常被問的問題。
實際我們在平時的開發(fā)中,經(jīng)常會遇到的,在用SQLyog等工具創(chuàng)建表時,就有一個引擎項要你去選。如下圖:

Mysql的存儲引擎有這么多種,實際我們在平時用的最多的莫過于InnoDB和MyISAM了。

所有如果面試官問道m(xù)ysql有哪些存儲引擎,你只需要告訴這兩個常用的就行。

那他們都有什么特點和區(qū)別呢?

MyISAM和InnoDB的特點:

MyISAM :默認(rèn)表類型,它是基于傳統(tǒng)的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲記錄和文件的標(biāo)準(zhǔn)方法。不是事務(wù)安全的,而且不支持外鍵,如果執(zhí)行大量的select,insert MyISAM比較適合。

InnoDB :支持事務(wù)安全的引擎,支持外鍵、行鎖、事務(wù)是他的最大特點。如果有大量的update和insert,建議使用InnoDB,特別是針對多個并發(fā)和QPS較高的情況。注: 在MySQL 5.5之前的版本中,默認(rèn)的搜索引擎是MyISAM,從MySQL 5.5之后的版本中,默認(rèn)的搜索引擎變更為InnoDB。

MyISAM和InnoDB的區(qū)別:

  1. InnoDB支持事務(wù),MyISAM不支持。對于InnoDB每一條SQL語言都默認(rèn)封裝成事務(wù),自動提交,這樣會影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個事務(wù);
  2. InnoDB支持外鍵,而MyISAM不支持。
  3. InnoDB是聚集索引,使用B+Tree作為索引結(jié)構(gòu),數(shù)據(jù)文件是和(主鍵)索引綁在一起的(表數(shù)據(jù)文件本身就是按B+Tree組織的一個索引結(jié)構(gòu)),必須要有主鍵,通過主鍵索引效率很高。MyISAM是非聚集索引,也是使用B+Tree作為索引結(jié)構(gòu),索引和數(shù)據(jù)文件是分離的,索引保存的是數(shù)據(jù)文件的指針。主鍵索引和輔助索引是獨立的。
  4. InnoDB不保存表的具體行數(shù),執(zhí)行select count(*) from table時需要全表掃描。而MyISAM用一個變量保存了整個表的行數(shù),執(zhí)行上述語句時只需要讀出該變量即可,速度很快。
  5. Innodb不支持全文索引,而MyISAM支持全文索引,查詢效率上MyISAM要高;5.7以后的InnoDB支持全文索引了。
  6. InnoDB支持表、行級鎖(默認(rèn)),而MyISAM支持表級鎖。
  7. InnoDB表必須有主鍵(用戶沒有指定的話會自己找或生產(chǎn)一個主鍵),而Myisam可以沒有。
  8. Innodb存儲文件有frm、ibd,而Myisam是frm、MYD、MYI。

Innodb:frm是表定義文件,ibd是數(shù)據(jù)文件。

Myisam:frm是表定義文件,myd是數(shù)據(jù)文件,myi是索引文件。

最后:

本次分享就到這里,相信通過上面的文章,你已經(jīng)對InnoDB和MyISAM有一個基本的認(rèn)識了,但是你僅僅知道這一些是不夠的,在接下來的一段時間里,我會繼續(xù)在我的專欄:后端架構(gòu)技術(shù)精選里面總結(jié)一些面試中的問題共享給大家。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MySQL數(shù) 據(jù)庫引擎取決于MySQL在安裝的時候是如何被編譯的。要添加一個新的引擎,就必須重新編譯MYSQL。在...
    時待吾閱讀 1,722評論 0 4
  • 插件式存儲引擎架構(gòu),靈活的處理方式,高度可定制化及完全開放的實現(xiàn) MySQL存儲引擎概述 MyISAM存儲引擎是M...
    每天學(xué)點編程閱讀 1,380評論 0 5
  • msyql -uroot -p123456 msyqladmin -uroot -p123456 GPG keys...
    nhsf閱讀 1,522評論 0 0
  • 索引 數(shù)據(jù)庫中的查詢操作非常普遍,索引就是提升查找速度的一種手段 索引的類型 從數(shù)據(jù)結(jié)構(gòu)角度分 1.B+索引:傳統(tǒng)...
    一凡呀閱讀 3,228評論 0 8
  • MySQL不權(quán)威總結(jié) 歡迎閱讀 本文并非事無巨細(xì)的mysql學(xué)習(xí)資料,而是選擇其中重要、困難、易錯的部分進(jìn)行系統(tǒng)地...
    liufxlucky365閱讀 2,820評論 0 26

友情鏈接更多精彩內(nèi)容