您好,登錄后才能下訂單哦!
MySQL 中 InnoDB 和 MyISAM 區(qū)別
1、事務(wù)和外鍵
InnoDB具有事務(wù),支持4個事務(wù)隔離級別,回滾,崩潰修復能力和多版本并發(fā)的事務(wù)安全,包括ACID。如果應(yīng)用中需要執(zhí)行大量的INSERT或UPDATE操作,則應(yīng)該使用InnoDB,這樣可以提高多用戶并發(fā)操作的性能
MyISAM管理非事務(wù)表。它提供高速存儲和檢索,以及全文搜索能力。如果應(yīng)用中需要執(zhí)行大量的SELECT查詢,那么MyISAM是更好的選擇
2、全文索引
Innodb不支持全文索引,如果一定要用的話,最好使用sphinx等搜索引擎。myisam對中文支持的不是很好
不過新版本的Innodb已經(jīng)支持了
3、鎖
mysql支持三種鎖定級別,行級、頁級、表級;
MyISAM支持表級鎖定,提供與 Oracle 類型一致的不加鎖讀取(non-locking read in SELECTs)
InnoDB支持行級鎖,InnoDB表的行鎖也不是絕對的,如果在執(zhí)行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會鎖全表,注意間隙鎖的影響
例如update table set num=1 where name like “%aaa%”
4、存儲
MyISAM在磁盤上存儲成三個文件。第一個文件的名字以表的名字開始,擴展名指出文件類型, .frm文件存儲表定義,數(shù)據(jù)文件的擴展名為.MYD, 索引文件的擴展名是.MYI
InnoDB,基于磁盤的資源是InnoDB表空間數(shù)據(jù)文件和它的日志文件,InnoDB 表的大小只受限于操作系統(tǒng)文件的大小
注意:MyISAM表是保存成文件的形式,在跨平臺的數(shù)據(jù)轉(zhuǎn)移中使用MyISAM存儲會省去不少的麻煩
5、索引
InnoDB(索引組織表)使用的聚簇索引、索引就是數(shù)據(jù),順序存儲,因此能緩存索引,也能緩存數(shù)據(jù)
MyISAM(堆組織表)使用的是非聚簇索引、索引和文件分開,隨機存儲,只能緩存索引
6、并發(fā)
MyISAM讀寫互相阻塞:不僅會在寫入的時候阻塞讀取,MyISAM還會在讀取的時候阻塞寫入,但讀本身并不會阻塞另外的讀
InnoDB 讀寫阻塞與事務(wù)隔離級別相關(guān)
以上就是MySQL 中 InnoDB 和 MyISAM 區(qū)別的詳細內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。