mysql的引擎myisam和innodb的區別

1. MYISAM和INNODB的不一樣?
答:主要有如下幾點區別:
   a)構造上的區別
     MyISAM在磁盤上存儲成三個文件,其中.frm文件存儲表定義;.MYD (MYData)爲數據文件;.MYI (MYIndex)爲索引文件。
     而innodb是由.frm文件、表空間(分爲獨立表空間或者共享表空間)和日誌文件(redo log)組成。
    b)事務上的區別
      myisam不支持事務;而innodb支持事務。
    c)鎖上的區別
 myisam使用的是表鎖;而innodb使用的行鎖(固然innodb也支持表鎖)。
 表級鎖:直接鎖定整張表,在鎖按期間,其餘進程沒法對該表進行寫操做,若是設置的是寫鎖,那麼其餘進程讀也不容許,所以myisam支持的併發量低,但myisam不會出現死鎖;
 行級鎖:只對指定的行進行鎖定,其餘進程仍是能夠對錶中的其餘行進行操做的。所以行鎖能大大的減小數據庫操做的衝突,但有時會致使死鎖。
    d)是否支持外鍵的區別
 myisam不支持外鍵,innodb支持外鍵
    e) select count(*)的區別
 對於沒有where的count(*)使用MyISAM要比InnoDB快得多。由於MyISAM內置了一個計數器,count(*)時它直接從計數器中讀,而InnoDB必須掃描全表。
    f)myisam只把索引都load到內存中,而innodb存儲引擎是把數據和索引都load到內存中 ,innob不支持全文索引
當須要使用數據庫事務時,該引擎固然是首選。因爲鎖的粒度更小,寫操做不會鎖定全表,因此在併發較高時,使用Innodb引擎會提高效率。
yIASM是MySQL默認的引擎,可是它沒有提供對數據庫事務的支持,也不支持行級鎖和外鍵,所以當INSERT(插入)或UPDATE(更新)數據時即寫操做須要鎖定整個表,效率便會低一些。

MyIASM引擎是爲了查和增長,效率高。全部功能都圍繞這這個

Innodb引擎功能更強(事務等)效率低一些。

相關文章
相關標籤/搜索