站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        mysql中MyISAM和InnoDB的區(qū)別是什么

        區(qū)別:1、InnoDB支持事務(wù),MyISAM不支持;2、InnoDB支持外鍵,而MyISAM不支持;3、InnoDB是聚集索引,而MyISAM是非聚集索引;4、Innodb不支持全文索引,而MyISAM支持全文索引;5、InnoDB支持表、行級(jí)鎖,而MyISAM支持表級(jí)鎖;6、InnoDB表必須有唯一索引,而Myisam可以沒(méi)有;7、存儲(chǔ)文件不同。

        mysql中MyISAM和InnoDB的區(qū)別是什么

        程序員必備接口測(cè)試調(diào)試工具:立即使用
        Apipost = Postman + Swagger + Mock + Jmeter
        Api設(shè)計(jì)、調(diào)試、文檔、自動(dòng)化測(cè)試工具
        后端、前端、測(cè)試,同時(shí)在線協(xié)作,內(nèi)容實(shí)時(shí)同步

        本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。

        InnoDB:MySQL默認(rèn)的事務(wù)型引擎,也是最重要和使用最廣泛的存儲(chǔ)引擎。它被設(shè)計(jì)成為大量的短期事務(wù),短期事務(wù)大部分情況下是正常提交的,很少被回滾。InnoDB的性能與自動(dòng)崩潰恢復(fù)的特性,使得它在非事務(wù)存儲(chǔ)需求中也很流行。除非有非常特別的原因需要使用其他的存儲(chǔ)引擎,否則應(yīng)該優(yōu)先考慮InnoDB引擎。

        MyISAM:在MySQL 5.1 及之前的版本,MyISAM是默認(rèn)引擎。MyISAM提供的大量的特性,包括全文索引、壓縮、空間函數(shù)(GIS)等,但MyISAM并不支持事務(wù)以及行級(jí)鎖,而且一個(gè)毫無(wú)疑問(wèn)的缺陷是崩潰后無(wú)法安全恢復(fù)。

        mysql中MyISAM和InnoDB的區(qū)別:

        1. InnoDB支持事務(wù),MyISAM不支持,對(duì)于InnoDB每一條SQL語(yǔ)言都默認(rèn)封裝成事務(wù),自動(dòng)提交,這樣會(huì)影響速度,所以最好把多條SQL語(yǔ)言放在begin和commit之間,組成一個(gè)事務(wù);

        2. InnoDB支持外鍵,而MyISAM不支持。對(duì)一個(gè)包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會(huì)失敗;

        3. InnoDB是聚集索引,使用B+Tree作為索引結(jié)構(gòu),數(shù)據(jù)文件是和(主鍵)索引綁在一起的(表數(shù)據(jù)文件本身就是按B+Tree組織的一個(gè)索引結(jié)構(gòu)),必須要有主鍵,通過(guò)主鍵索引效率很高。但是輔助索引需要兩次查詢,先查詢到主鍵,然后再通過(guò)主鍵查詢到數(shù)據(jù)。因此,主鍵不應(yīng)該過(guò)大,因?yàn)橹麈I太大,其他索引也都會(huì)很大。

        MyISAM是非聚集索引,也是使用B+Tree作為索引結(jié)構(gòu),索引和數(shù)據(jù)文件是分離的,索引保存的是數(shù)據(jù)文件的指針。主鍵索引和輔助索引是獨(dú)立的。

        也就是說(shuō):InnoDB的B+樹主鍵索引的葉子節(jié)點(diǎn)就是數(shù)據(jù)文件,輔助索引的葉子節(jié)點(diǎn)是主鍵的值;而MyISAM的B+樹主鍵索引和輔助索引的葉子節(jié)點(diǎn)都是數(shù)據(jù)文件的地址指針。

        mysql中MyISAM和InnoDB的區(qū)別是什么

        mysql中MyISAM和InnoDB的區(qū)別是什么

        4. InnoDB不保存表的具體行數(shù),執(zhí)行select count(*) from table時(shí)需要全表掃描。而MyISAM用一個(gè)變量保存了整個(gè)表的行數(shù),執(zhí)行上述語(yǔ)句時(shí)只需要讀出該變量即可,速度很快(注意不能加有任何WHERE條件);

        那么為什么InnoDB沒(méi)有了這個(gè)變量呢?

        因?yàn)镮nnoDB的事務(wù)特性,在同一時(shí)刻表中的行數(shù)對(duì)于不同的事務(wù)而言是不一樣的,因此count統(tǒng)計(jì)會(huì)計(jì)算對(duì)于當(dāng)前事務(wù)而言可以統(tǒng)計(jì)到的行數(shù),而不是將總行數(shù)儲(chǔ)存起來(lái)方便快速查詢。InnoDB會(huì)嘗試遍歷一個(gè)盡可能小的索引除非優(yōu)化器提示使用別的索引。如果二級(jí)索引不存在,InnoDB還會(huì)嘗試去遍歷其他聚簇索引。
        如果索引并沒(méi)有完全處于InnoDB維護(hù)的緩沖區(qū)(Buffer Pool)中,count操作會(huì)比較費(fèi)時(shí)。可以建立一個(gè)記錄總行數(shù)的表并讓你的程序在INSERT/DELETE時(shí)更新對(duì)應(yīng)的數(shù)據(jù)。和上面提到的問(wèn)題一樣,如果此時(shí)存在多個(gè)事務(wù)的話這種方案也不太好用。如果得到大致的行數(shù)值已經(jīng)足夠滿足需求可以嘗試SHOW TABLE STATUS

        5. Innodb不支持全文索引,而MyISAM支持全文索引,在涉及全文索引領(lǐng)域的查詢效率上MyISAM速度更快高;PS:5.7以后的InnoDB支持全文索引了

        6. MyISAM表格可以被壓縮后進(jìn)行查詢操作

        7. InnoDB支持表、行(默認(rèn))級(jí)鎖,而MyISAM支持表級(jí)鎖

        InnoDB的行鎖是實(shí)現(xiàn)在索引上的,而不是鎖在物理行記錄上。潛臺(tái)詞是,如果訪問(wèn)沒(méi)有命中索引,也無(wú)法使用行鎖,將要退化為表鎖。

        例如:

        t_user(uid, uname, age, sex) innodb;       uid PK     無(wú)其他索引     update t_user set age=10 where uid=1;             命中索引,行鎖。       update t_user set age=10 where uid != 1;           未命中索引,表鎖。       update t_user set age=10 where name='chackca';    無(wú)索引,表鎖。
        登錄后復(fù)制

        8、InnoDB表必須有唯一索引(如主鍵)(用戶沒(méi)有指定的話會(huì)自己找/生產(chǎn)一個(gè)隱藏列Row_id來(lái)充當(dāng)默認(rèn)主鍵),而Myisam可以沒(méi)有

        9、Innodb存儲(chǔ)文件有frm、ibd,而Myisam是frm、MYD、MYI

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

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

        如何選擇:

        1. 是否要支持事務(wù),如果要請(qǐng)選擇innodb,如果不需要可以考慮MyISAM;

        2. 如果表中絕大多數(shù)都只是讀查詢,可以考慮MyISAM,如果既有讀也有寫,請(qǐng)使用InnoDB。

        3. 系統(tǒng)奔潰后,MyISAM恢復(fù)起來(lái)更困難,能否接受;

        4. MySQL5.5版本開始Innodb已經(jīng)成為Mysql的默認(rèn)引擎(之前是MyISAM),說(shuō)明其優(yōu)勢(shì)是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不會(huì)差。

        InnoDB為什么推薦使用自增ID作為主鍵?

        答:自增ID可以保證每次插入時(shí)B+索引是從右邊擴(kuò)展的,可以避免B+樹和頻繁合并和分裂(對(duì)比使用UUID)。如果使用字符串主鍵和隨機(jī)主鍵,會(huì)使得數(shù)據(jù)隨機(jī)插入,效率比較差。

        innodb引擎的4大特性

        插入緩沖(insert buffer),二次寫(double write),自適應(yīng)哈希索引(ahi),預(yù)讀(read ahead)

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品福利区一区二区三区四区 | 亚洲国产另类久久久精品黑人| 福利姬在线精品观看| 久久久久久国产精品无码下载 | 国产欧美精品AAAAAA片| 麻豆精品三级全部视频| 成人精品视频成人影院| 国产精品久久久久久久久免费| 久久久久女人精品毛片| 中文精品99久久国产| 四虎精品免费永久免费视频| 国内精品久久久久久不卡影院| 香蕉国产精品频视| 精品国产网红福利在线观看| 精品欧洲av无码一区二区| 无码人妻精品一区二区三区久久 | 欧美国产精品久久高清| 国产三级国产精品国产普男人 | 日本精品自产拍在线观看中文| 国产精品一区在线观看你懂的| 日本精品不卡视频| 韩国精品欧美一区二区三区| 97久久久久人妻精品专区| 国产精品亲子乱子伦xxxx裸| 国内精品久久久久影院一蜜桃| 欧美精品久久久久久久自慰 | 久久国产乱子伦免费精品| 亚洲动漫精品无码av天堂| 亚洲精品无码99在线观看| 亚洲精品tv久久久久| 亚洲国产精品第一区二区三区| 四虎国产精品免费久久| 中文无码精品一区二区三区| 精品少妇无码AV无码专区| 国产成人久久精品麻豆一区| 99精品福利国产在线| 中文字幕亚洲精品| 国产精品 猎奇 另类视频| 91精品国产91久久久久久蜜臀| 天天爽夜夜爽精品视频app| 9re热国产这里只有精品|