存儲引擎 | InnoDB | MyISAM |
---|---|---|
文件存儲結構 | .frm文件:存放表結構的定義信息 .ibd文件或.ibdata文件:存放InnoDB數據(數據和索引) 【獨享表空間】每個表一個.ibd文件 【共享表空間】所有表使用一個.ibdata文件 | - .frm文件:存放表結構的定義信息 - MVD(MYData)文件:存儲MyISAM表的數據 - MYI(MYIndex)文件:存儲MyISAM表的索引相關信息 |
事務 | 支持 | 不支持 |
外鍵 | 支持 | 不支持 |
索引 | 支持聚簇索引和非聚簇索引 | 僅支持非聚簇索引 |
鎖 | 支持表級鎖和行級鎖 | 僅支持表級鎖,不適合高并發 |
關注點 | 事務 | 性能 |
表大小 | 大 | 小 |
索引緩存 | 不僅緩存索引還緩存數據,內存大小對性能有非常大影響 | 僅緩存索引 |
是否保存具體行數 | 否。count(*) 時需要全表掃描,效率低 | 是。內部有一個變量記錄表的行數,效率高 |
使用場景 | 1.數據增刪改查都相當頻繁(和支持的鎖相關) 2.可靠性要求比較高,要求支持事務 | 1.頻繁執行全表count 語句2.對數據進行增刪改的頻率不高,查詢非常頻繁(不需要回表) 3.沒有事務 |