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