InnoDB的優(yōu)勢在于提供了良好的事務處理、崩潰修復能力和并發(fā)控制。缺點是讀寫效率較差,占用的數(shù)據(jù)空間相對較大。
①InnoDB:支持事務處理,支持外鍵,支持崩潰修復能力和并發(fā)控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現(xiàn)并發(fā)控制(比如售票),那選擇InnoDB有很大的優(yōu)勢。如果需要頻繁的更新、刪除操作的數(shù)據(jù)庫,也可以選擇InnoDB,因為支持事務的提交(commit)和回滾(rollback)。
②MyISAM:插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實現(xiàn)處理高效率。如果應用的完整性、并發(fā)性要求比 較低,也可以使用。
③MEMORY:所有的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對數(shù)據(jù)的安全性要求較低,可以選擇MEMOEY。它對表的大小有要求,不能建立太大的表。所以,這類數(shù)據(jù)庫只使用在相對較小的數(shù)據(jù)庫表。
注意,同一個數(shù)據(jù)庫也可以使用多種存儲引擎的表。如果一個表要求比較高的事務處理,可以選擇InnoDB。這個數(shù)據(jù)庫中可以將查詢要求比較高的表選擇MyISAM存儲。如果該數(shù)據(jù)庫需要一個用于查詢的臨時表,可以選擇MEMORY存儲引擎。
關于主鍵和外鍵的區(qū)別和聯(lián)系:
主鍵就是一個表的主關鍵字,能夠唯一確定這條記錄的。
外鍵就是參考主表中的某一個字段的值,一般是一個主鍵記錄對應多個外鍵記錄。一般是某一張表的一個外鍵字段引用另一張表的主鍵。