標籤:使用 檔案 資料 linux 資料庫 sql window 設計
InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,基本的差別為:MyISAM類型不支援交易處理等進階處理,而InnoDB類型支援。但MyISAM類型的表強調的是效能,其執行數度比InnoDB類型更快。另外,MyISAM類型的位元據檔案可以在不同作業系統中遷移。也就是可以直接從Windows系統拷貝到linux系統中使用。可以根據資料表不同的用處是用不同的儲存類型。
InnoDB 是 MySQL 上第一個提供外鍵約束的引擎,除了提供交易處理外,InnoDB 還支援行鎖,提供和 Oracle 一樣的一致性的不加鎖讀取,能增加並發讀的使用者數量並提高效能,不會增加鎖的數量。
InnoDB 的設計目標是處理大容量資料時最大化效能,它的 CPU 利用率是其他所有基於磁碟的關聯式資料庫引擎中最有效率的。
InnoDB 是一套放在 MySQL 背景完整資料庫系統,InnoDB 有它自己的緩衝池,能緩衝資料和索引,InnoDB 還把資料和索引存放在資料表空間裡面,可能包含好幾個檔案,這和 MyISAM 表完全不同,在 MyISAM 中,表被存放在單獨的檔案中,InnoDB 表的大小隻受限於作業系統檔案的大小,一般為 2GB。
InnoDB不支援FULLTEXT類型的索引。LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方案是首先把InnoDB表改成MyISAM表,匯入資料後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外鍵)的表不適用。另外,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的範圍,InnoDB表同樣會鎖全表,例如update table set num=1 where name like "%aaa%"。
MYSQL建表時,如果不指定資料庫表的類型,會預設為MyISAM型資料庫,在建表語句中如果指定ENGINE=InnoDB則資料庫引擎則會是InnoDB類型。
一般情況下,指定好資料庫引擎後,只要操作正確,資料庫引擎是不會變化的,但是如果出現以下操作不當的情況,資料庫引擎就會發生變化:
1、強制kill資料庫;
2、資料庫的log和實際資料不一致;