MySQL Engine Type,轉載自麥克的學習紀錄。

MyISAM
1.效能優,預設引擎,為 Mysql 最早使用的引擎。
2.使用 MyISAM 將具備三種檔案:
 .frm (table format)  .MYD(data file)  .MYI(index file)
3.所有資料是以 low byte first 儲存,數字型 key 是以 high byte first 儲存以利索引。
4.支援大檔。( >63 bit)
5.支援 42 億 (2^32 次方) 資料筆數,如果 MySQL 編譯有加入 --with-big-tables 選項,
可支援多一倍(2^32 次方 * 2)資料量。
6.不支援事務處理,例如關聯式資料庫。
7.AUTO_INCREMENT 更快(至少10%),序列的值被刪除之後就不能再利用。

InnoDB
1.具備 Commit Rollback 和當掉復原的事務處理能力,可保護使用者資料。
2.可進行 row-level 的鎖定同時維持 nonlocking reads,以支援多人同時連線狀態。
3.可支援 FOREIGN KEY。
4.InnoDB 是專門為了大容量資料的最大效率進行設計的,
CPU 效能是其他的 disk-based 資料庫引擎所不及的。
5.InnoDB 儲存的表和 index 在一個表空間中,此表空間可能包含幾個檔
(有可能在不同 disk partitions),此點和 MyISAM 不同,MyISAM 是一個表一個檔案,
這差異點造成 InnoDB 表格可以非常大,即使是超過系統的 file size(例如2GB)都可處理。
6.此為 Windows 安裝檔的默認值。
7.InnoDB 上可處理存儲超過 1TB 的數據,可支援例如平均每秒 800 次新增/修改的負荷。
8.支援關聯資料庫。

InnoDB使用上的限制
1.不要將 MyISAM 轉成InnoDB table。
2.不要在 NFS 格式上將 InnoDB 設定成 data files 或 log file,檔案容易被鎖住。
3.一個表不能包含超過 1000 欄。
4.內部 key 最大長度為 3500 bytes,MySQL 限制為 3072 Bytes。
5.每筆資料最長約為 8000 Bytes,變長的欄位(例如Varchar/BLOB/TEXT)需小於 4000 Bytes。
6.即使 InnoDB 支援 row size 大於 65535,也不能定義一個包含 VARBINARY/VARCHAR 的欄位,
欄位總合大於65535(會出現錯誤訊息)。
7.在一些舊系統中,檔案需小於 2GB,這並不限制 InnoDB 的使用,
但你如果需要大的 tablespace 則需額外進行設定
8.InnoDB 的 log file 總共大小需小於 4GB。
9.最小的 tablespace 大小為 10MB,最大的大小為 64TB,這也是 table 的最大值。
10.不支援 FULLTEXT。
11.InnoDB 不保留每個表格的總數統計,也就是 count(*) 則必須進行 index 計算。
12.在 InnoDB 中,AUTO_INCREMENT 欄位如果存在,則"必須"定義一個 index 欄位,
其中包含 AUTO_INCREMENT 欄;在 MyISAM 中,AUTO_INCREMENT 欄位"可能"為 index 中的一欄。
13.DELETE FROM Table 為逐筆資料刪除,非整個 table 刪除。
14.在 InnoDB 中,TRUNCATE Table 相同於 DELETE Table,AUTO_INCREMENT 不重置。

flyfox 發表在 痞客邦 PIXNET 留言(0) 人氣()