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

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


咨詢
建站咨詢
