Mysql Engine【innodb,myisam】
2019獨角獸企業重金招聘Python工程師標準>>>
Innodb,Myisam都是Mysql數據庫存儲的引擎,Innodb支持事務等數據庫高級特性,Myisam不支持,但比較快速。
ISAM 是一個定義明確且歷經時間考驗的數據表格管理方法,它在設計時就考慮到數據庫被查詢的次數要遠遠高于更新的次數。因此,ISAM執行讀取操作的速度很快,而且不占用大量的內存和存儲資源。ISAM的兩個主要不足之處在于,它不支持事務處理,也不能夠容錯;如果你的硬盤崩潰了,那么數據文件就無法恢復了。如果你正在把ISAM用在關鍵任務應用程序里,那就必須經常備份你所有的實時數據,通過其復制特性,MySQL能夠支持這樣的復制備份應用程序
InnoDB 它提供了事務控制能力功能,它確保一組命令全部執行成功?;蛘弋斎魏我粭l命令出現錯誤時所有命令的結果都被回退,可以想象在電子銀行中事務控制能力是非常重要的。支持COMMIT,ROLLBACK和其他事務特性。最新版本的MySQL已經計劃移除對DBD的支持,權利發展InnoDB
MyISAM是ISAM表的新版本,進行了如下擴展:
二進制層次的可移植性,NULL列索引,對變長行比ISAM表有更少的碎片。支持大文件,更好的索引壓縮,更好的鍵嗎統計分布,更好和更快的Auto_increment處理
區別如下:
InnoDB不支持FULLTEXT類型的索引。
InnoDB不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,但是Myisam只要簡單的讀出保存好的行數即可。需要注意的是,如果select語句后面包含了where條件,則兩種表的操作是一樣的。
對于auto_increment類型的字段,InnoDB中必須包含只有該字段的索引,但是在Myisam中,可以和其他字段一起建立聯合索引。
DELETE from table時,InnoDB不會重新建立表。
LOAD TABLE FROM MASTER 操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成Myisam表,到入數據后再改成InnoDB表,但是對于使用的額外的InnoDB特性的表來說不適用,另外InnoDB的行鎖也不是絕對的,如果在執行了一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB同樣會鎖全表
MySQL aminstractor建數據庫的時候,表缺省是InnoDB類型
InnoDB,Myisam兩種類型:Myisam不支持事務處理高級特性,而InnoDB支持;Myisam類型的表強調的是性能,其執行速度比InnoDB類型的更快
Myisam類型的二進制數據文件可以在不同的操作系統中遷移,也就是可以直接從windows系統拷貝到linux系統中使用
修改表的引擎類型:ALTER TABLE tablename ENGINE = MYISAM;
轉載于:https://my.oschina.net/u/2611678/blog/640119
總結
以上是生活随笔為你收集整理的Mysql Engine【innodb,myisam】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第四周周记
- 下一篇: lost connection to M