Mysql Engine【innodb,myisam】

Innodb,Myisam都是Mysql數據庫存儲的引擎,Innodb支持事務等數據庫高級特性,Myisam不支持,但比較快速。
linux

  1. ISAM 是一個定義明確且歷經時間考驗的數據表格管理方法,它在設計時就考慮到數據庫被查詢的次數要遠遠高於更新的次數。所以,ISAM執行讀取操做的速度很快,並且不佔用大量的內存和存儲資源。ISAM的兩個主要不足之處在於,它不支持事務處理,也不可以容錯;若是你的硬盤崩潰了,那麼數據文件就沒法恢復了。若是你正在把ISAM用在關鍵任務應用程序裏,那就必須常常備份你全部的實時數據,經過其複製特性,MySQL可以支持這樣的複製備份應用程序sql

  2. InnoDB 它提供了事務控制能力功能,它確保一組命令所有執行成功。或者當任何一條命令出現錯誤時全部命令的結果都被回退,能夠想象在電子銀行中事務控制能力是很是重要的。支持COMMIT,ROLLBACK和其餘事務特性。最新版本的MySQL已經計劃移除對DBD的支持,權利發展InnoDB數據庫

  3. MyISAM是ISAM表的新版本,進行了以下擴展:windows

    二進制層次的可移植性,NULL列索引,對變長行比ISAM表有更少的碎片。支持大文件,更好的索引壓縮,更好的鍵嗎統計分佈,更好和更快的Auto_increment處理性能

  4. 區別以下:操作系統

    1. InnoDB不支持FULLTEXT類型的索引。設計

    2. InnoDB不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,可是Myisam只要簡單的讀出保存好的行數便可。須要注意的是,若是select語句後面包含了where條件,則兩種表的操做是同樣的。索引

    3. 對於auto_increment類型的字段,InnoDB中必須包含只有該字段的索引,可是在Myisam中,能夠和其餘字段一塊兒創建聯合索引。事務

    4. DELETE from table時,InnoDB不會從新創建表。內存

    5. LOAD TABLE FROM MASTER 操做對InnoDB是不起做用的,解決方法是首先把InnoDB表改爲Myisam表,到入數據後再改爲InnoDB表,可是對於使用的額外的InnoDB特性的表來講不適用,另外InnoDB的行鎖也不是絕對的,若是在執行了一個SQL語句時MySQL不能肯定要掃描的範圍,InnoDB一樣會鎖全表

    6. MySQL aminstractor建數據庫的時候,表缺省是InnoDB類型

    7. InnoDB,Myisam兩種類型:Myisam不支持事務處理高級特性,而InnoDB支持;Myisam類型的表強調的是性能,其執行速度比InnoDB類型的更快

    8. Myisam類型的二進制數據文件能夠在不一樣的操做系統中遷移,也就是能夠直接從windows系統拷貝到linux系統中使用

    9. 修改表的引擎類型:ALTER TABLE tablename ENGINE = MYISAM;

相關文章
相關標籤/搜索