新聞中心
在使用 MySQL 數(shù)據(jù)庫管理系統(tǒng)時,選擇一個合適的存儲引擎是一個非常復雜的問題。不同的存儲引擎都有各自的特性、優(yōu)勢和使用的場合,正確的選擇存儲引擎可以提高應用的使用效率。
為了能夠正確地選擇存儲引擎,必須掌握各種存儲引擎的特性。下面重點介紹幾種常用的存儲引擎,它們對各種特性的支持如下表所示。

| 特性 | MyISAM | InnoDB | MEMORY |
|---|---|---|---|
| 存儲限制 | 有 | 支持 | 有 |
| 事務安全 | 不支持 | 支持 | 不支持 |
| 鎖機制 | 表鎖 | 行鎖 | 表鎖 |
| B樹索引 | 支持 | 支持 | 支持 |
| 哈希索引 | 不支持 | 不支持 | 支持 |
| 全文索引 | 支持 | 不支持 | 不支持 |
| 集群索引 | 不支持 | 支持 | 不支持 |
| 數(shù)據(jù)緩存 | 支持 | 支持 | |
| 索引緩存 | 支持 | 支持 | 支持 |
| 數(shù)據(jù)可壓縮 | 支持 | 不支持 | 不支持 |
| 空間使用 | 低 | 高 | N/A |
| 內存使用 | 低 | 高 | 中等 |
| 批量插入速度 | 高 | 低 | 高 |
| 支持外鍵 | 不支持 | 支持 | 不支持 |
表中主要介紹了 MyISAM、InnoDB 和 MEMORY 三種存儲引擎特性的對比。下面詳細介紹這 3 個存儲引擎的應用場合并給出相應的建議。
1) MyISAM
在 MySQL 5.1 版本及之前的版本,MyISAM 是默認的存儲引擎。
MyISAM 存儲引擎不支持事務和外鍵,所以訪問速度比較快。如果應用主要以讀取和寫入為主,只有少量的更新和刪除操作,并且對事務的完整性、并發(fā)性要求不是很高,那么選擇 MyISAM 存儲引擎是非常適合的。
MyISAM 是在 Web 數(shù)據(jù)倉儲和其他應用環(huán)境下最常使用的存儲引擎之一。
2) InnoDB
MySQL 5.5 版本之后默認的事務型引擎修改為 InnoDB。
InnoDB 存儲引擎在事務上具有優(yōu)勢,即支持具有提交、回滾和崩潰恢復能力的事務安裝,所以比 MyISAM 存儲引擎占用更多的磁盤空間。
如果應用對事務的完整性有比較高的要求,在并發(fā)條件下要求數(shù)據(jù)的一致性,數(shù)據(jù)操作除了插入和查詢以外,還包括很多的更新、刪除操作,那么 InnoDB 存儲引擎是比較合適的選擇。
InnoDB 存儲引擎除了可以有效地降低由于刪除和更新導致的鎖定,還可以確保事務的完整提交(Commit)和回滾(Rollback),對于類似計費系統(tǒng)或者財務系統(tǒng)等對數(shù)據(jù)準確性要求比較高的系統(tǒng),InnoDB 都是合適的選擇。
3) MEMORY
MEMORY 存儲引擎將所有數(shù)據(jù)保存在 RAM 中,所以該存儲引擎的數(shù)據(jù)訪問速度快,但是安全上沒有保障。
MEMORY 對表的大小有限制,太大的表無法緩存在內存中。由于使用 MEMORY 存儲引擎沒有安全保障,所以要確保數(shù)據(jù)庫異常終止后表中的數(shù)據(jù)可以恢復。
如果應用中涉及數(shù)據(jù)比較少,且需要進行快速訪問,則適合使用 MEMORY 存儲引擎。
總結
不同應用的特點是千差萬別的,選擇適應存儲引擎才是最佳方案也不是絕對的,這需要根據(jù)實際應用進行測試,從而得到最適合的結果。
分享文章:如何選擇MySQL存儲引擎?
標題鏈接:http://fisionsoft.com.cn/article/cdshgpg.html


咨詢
建站咨詢
