MySQL?存儲(chǔ)引擎概覽(最新推薦)
MySQL 的存儲(chǔ)引擎(Storage Engine)決定了數(shù)據(jù)如何存儲(chǔ)、索引如何組織、事務(wù)是否支持、鎖的粒度、崩潰恢復(fù)能力等,是數(shù)據(jù)庫性能與可靠性的核心。
一、常見存儲(chǔ)引擎對(duì)比(重點(diǎn))
1. InnoDB(默認(rèn) / 首選)
特性
- 支持事務(wù)(ACID)
- 行級(jí)鎖(并發(fā)能力強(qiáng))
- 支持外鍵
- 崩潰恢復(fù)(redo / undo log)
- 聚簇索引(數(shù)據(jù)即索引)
適用場(chǎng)景
- 業(yè)務(wù)系統(tǒng)(ERP / 電商 / 金融)
- 高并發(fā)寫入
- 對(duì)一致性、可靠性要求高
關(guān)鍵詞(面試高頻)
- MVCC
- Redo Log / Undo Log
- 行鎖 vs 間隙鎖
- Buffer Pool
2. MyISAM(已逐漸淘汰)
特性
- 不支持事務(wù)
- 表級(jí)鎖
- 讀性能好
- 表損壞風(fēng)險(xiǎn)高
- 數(shù)據(jù)與索引分離(MYD / MYI)
適用場(chǎng)景
- 只讀或讀多寫少
- 歷史系統(tǒng)、統(tǒng)計(jì)類查詢
MySQL 8.x 中已不推薦使用
3. Memory(內(nèi)存表)

特性
- 數(shù)據(jù)存放在內(nèi)存
- 默認(rèn) Hash 索引(也支持 B-Tree)
- 重啟即丟數(shù)據(jù)
- 表級(jí)鎖
適用場(chǎng)景
- 臨時(shí)表
- 高速緩存表
- 中間計(jì)算結(jié)果
4. Archive(歸檔引擎)
特性
- 高壓縮比
- 只支持 INSERT / SELECT
- 不支持索引(除自增)
適用場(chǎng)景
- 日志歸檔
- 審計(jì)數(shù)據(jù)
- 歷史冷數(shù)據(jù)
5. CSV
特性
- 數(shù)據(jù)以 CSV 文件形式存儲(chǔ)
- 無索引、無事務(wù)
適用場(chǎng)景
- 與外部系統(tǒng)做數(shù)據(jù)交換
- ETL 中轉(zhuǎn)
二、核心差異對(duì)比表
| 特性 | InnoDB | MyISAM | Memory | Archive |
|---|---|---|---|---|
| 事務(wù) | ? | ? | ? | ? |
| 鎖粒度 | 行鎖 | 表鎖 | 表鎖 | 行鎖 |
| 崩潰恢復(fù) | ? | ? | ? | ? |
| 外鍵 | ? | ? | ? | ? |
| 索引結(jié)構(gòu) | B+Tree(聚簇) | B+Tree | Hash / B+Tree | 無 |
| 默認(rèn)引擎 | ? | ? | ? | ? |
三、如何查看和設(shè)置存儲(chǔ)引擎
查看當(dāng)前支持的引擎
SHOW ENGINES;
查看表的存儲(chǔ)引擎
SHOW TABLE STATUS WHERE Name = 'user';
建表時(shí)指定引擎
CREATE TABLE user ( id BIGINT PRIMARY KEY, name VARCHAR(50) ) ENGINE=InnoDB;
四、選型建議(實(shí)戰(zhàn)經(jīng)驗(yàn))
- 99% 的業(yè)務(wù)表:InnoDB
- 緩存 / 臨時(shí)數(shù)據(jù):Memory
- 日志 / 歷史數(shù)據(jù):Archive
- 不要在新系統(tǒng)使用 MyISAM
五、面試一句話總結(jié)
InnoDB 是 MySQL 的事實(shí)標(biāo)準(zhǔn)存儲(chǔ)引擎,核心優(yōu)勢(shì)是事務(wù)、行鎖、MVCC 和高可靠性;其他引擎只在特定場(chǎng)景使用。
到此這篇關(guān)于MySQL 存儲(chǔ)引擎概覽的文章就介紹到這了,更多相關(guān)mysql存儲(chǔ)引擎內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql聯(lián)合索引最左匹配原則的底層實(shí)現(xiàn)原理解讀
這篇文章主要介紹了mysql聯(lián)合索引最左匹配原則的底層實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
MySQL表的內(nèi)外連接和視圖使用實(shí)戰(zhàn)練習(xí)
這篇文章主要給大家介紹了關(guān)于MySQL表的內(nèi)外連接和視圖使用的相關(guān)資料,MySQL的內(nèi)外連接查詢是用于將兩個(gè)或多個(gè)表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián)查詢的一種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫入到文件的3種方法舉例
這篇文章主要給大家介紹了關(guān)于mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫入到文件的3種方法,?在使用MySQL進(jìn)行數(shù)據(jù)庫操作的過程中,我們經(jīng)常需要將查詢結(jié)果導(dǎo)出到文件中以備后續(xù)分析和處理,需要的朋友可以參考下2023-08-08

