對這文章發表回應
發表限制: 非會員 可以發表
Mysql的 Engine Type有幾種常用到的,以下是
MySQL 5.0 Reference Manual中之資料,邊看邊快速的紀錄一下各項的差異和使用時機
設定引擎建,議用 ENGINE = MyISAM 方式指定,Type = 為較舊的方法(也支援)
■ MyISAM :
1. 2. 使用MyISAM將具備三種 檔案: .frm (table format) .MYD(data file) .MYI(index file) 3. 所有資料是以low byte first儲存,數字型key是以high byte first儲存以利索引 5. 支援42億(2^32次方) 資料筆數,如果MySQL編譯有加入--with-big-tables 選項可支援多一倍(2^32次方 * 2)資料量 6. 不支援事務處理,例如關聯式 資料庫 7.AUTO_INCREMENT |
■ InnoDB:
1. 具備Commit, Rollback和當掉復原的事務處理能力,可保護使用者資料 2. 可進行row-level的 鎖定同時維持nonlocking reads,以支援多人同時連線狀態 3. 可支援FOREIGN KEY 4.InnoDB 是專門為了大容 量資料的最大效率進行設計的,CPU效能是其他的disk-based資料庫引擎所不及的 6. 此為Windows安裝檔的 默認值 7.InnoDB 上可處理存儲超 過1TB的數據,可支援例如平均每秒800次插入/更新的負荷 |
■ InnoDB 使用上的限制:
2. 不要在NFS格式上將 InnoDB設定成data files或log file,檔案容易被鎖住 3. 一個表不能包含超過1000 欄 4. 5. 每筆資料最長約為8000 Bytes,變長的欄位(例如Varchar/BLOB/TEXT)需小於4000 Bytes. 6. 即使InnoDB支援row size大於65535,也不能定義一個包含VARBINARY/VARCHAR的欄位總合大於65535 (會出現錯誤訊息) 7. 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刪除 |
■ Memory( 相同於HEAP):
2. 每一個MEMORY Table關聯一個Disk file(.frm) 3. 常使用在 create temporary table上,連線結束後就釋放空間 4. 5.MEMORY 不支持BLOB 或TEXT列 6.MEMORY 使用定長的儲存 格式列 7. 可支援 AUTO_INCREMENT |
■ 相關資料庫語法:
SHOW ENGINES ; // 顯示可使用的Engine SET storage_engine=MYISAM; // SHOW CREATE TABLE tbl_name; // 顯示資料庫建立語法 |
■ 其它參考:
各種Engine的比較表格有人整理好 了,可參考
MySQL 資料庫儲存引擎的選 用
原文出處: [Mysql進階]各Engine Type(MyISAM / InnoDB / Memory) 的特性說明 @ 麥克的學習紀錄 :: 痞客邦 PIXNET ::