Mysql MYISAM與Innodb區別

一、存儲結構

  每個myisam的表在磁盤空間上有三個文件,表定義文件(.frm),數據文件(.MYD),索引文件(MYI)
Innodb:所有表都存儲在同一個數據文件(也可能是多個,或者獨立的表空間)

二、存儲空間

  MYISAM:可被壓縮,存儲空間較小。
  Innodb:需要更多的內存和存儲,會在主內存建立其專用的緩衝池用於高速緩衝數據和索引。
  MYISAM的索引是和數據分開的,並且是可壓縮的,內存使用率對應的提高了不少,二Innodb是索引和數據緊密
  捆綁的,沒有使用壓縮從而造成Innodb比MYISAM體積龐大不少

三、事務處理

  MYISAM類型的表強調的是性能,其執行速度比Innodb要快得多,但是不支持外鍵,不提供事務支持。
  Innodb提供事務支持事務,外鍵等高級數據庫功能。

四、CURD

  如果執行大量的SELECT操作,MYISAM是更好的選擇
  如果是UPDATE,INSERT出於性能考慮,Innodb是更好的選擇
  DELETE操作時Innod不會重新建立表,而是一行一行的刪除。而MYISAM則是重新建立表。

五、AUTO_INCREMENT

  MYISAM:可以和其它字段一起建立聯合索引。引擎自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,他可以通過前面幾列排序後遞增。
  Innodb必須包含該只有該字段的索引。引擎自動遞增必須是索引,如果是組合索引也必須是組合索引第一列。

六、表的具體函數

  MYISAM:保存表的總行數,如果select count(*) from table直接取出該值
  Innodb:沒有保存表的總行數,如果select count(*) from table就會遍歷整個表,消耗會相當的大,但是在
加了where後MYISAM和Innodb處理方式都一樣

七、全文索引

  MYISAM:支持全文索引(fuultext)。不支持中文
  Innodb:不支持全文索引(fulltext)。但Innodb可以使用sphinx插件支持全文索引,並且效果更佳

八、表鎖差異

  MYISAM:支持表鎖。
  Innodb:支持事務和行鎖,是Innodb最大特色。行鎖大幅度提高了多用戶的併發操作性能,但是Innodb的
行鎖不是絕對的,行鎖只在where主鍵是有效的非主鍵where都會進行表鎖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章