第三章 存儲引擎
1. 存儲引擎命令
存儲引擎是負(fù)責(zé)對表中的數(shù)據(jù)進(jìn)行提取和寫入工作的催首,我們可以為不同的表設(shè)置不同的存儲引擎蚁趁,也就是說不同的表可以有不同的物理存儲結(jié)構(gòu)裙盾,不同的提取和寫入方式。
若在創(chuàng)建表的語句中沒有指定表的存儲引擎,那表就會使用默認(rèn)的存儲引擎番官。
- 查看所有存儲引擎
show engines;
- 查看默認(rèn)的存儲引擎:
show variables like '%storage_engine%';
-- 或
SELECT @@default_storage_engine;
- 修改默認(rèn)的存儲引擎
SET DEFAULT_STORAGE_ENGINE=MyISAM;
或者修改my.ini文件:
[mysql]
default-storage-engine=MyISAM
- 創(chuàng)建表時指定存儲引擎
CREATE TABLE 表名(
建表語句;
) ENGINE = 存儲引擎名稱;
- 修改表的存儲引擎
ALTER TABLE 表名 ENGINE = 存儲引擎名稱;
2. 存儲引擎介紹
2.1 InnoDB 引擎:5.5版本后的默認(rèn)存儲引擎
特點:
- 支持外鍵
- 支持事務(wù)童芹,可以確保事務(wù)的完整提交(Commit)和回滾(Rollback)。
- 除了
insert
和select
外鲤拿,還需要update
假褪、delete
操作,應(yīng)優(yōu)先選擇InnoDB存儲引擎近顷。- 數(shù)據(jù)文件結(jié)構(gòu):
.ibd
存儲數(shù)據(jù)和索引生音;.frm
存儲表結(jié)構(gòu)(8.0合并在.ibd
中)。- InnoDB是為處理巨大數(shù)據(jù)量的最大性能設(shè)計窒升。
- InnoDB不僅緩存索引還要緩存真實數(shù)據(jù)缀遍,對內(nèi)存要求較高,而且內(nèi)存大小對性能有決定性的影響饱须。--索引即數(shù)據(jù)
2.2 MyISAM 引擎:5.5版本前的默認(rèn)存儲引擎
特點:
- MyISAM提供了大量的特性域醇,包括全文索引、壓縮蓉媳、空間函數(shù)(GIS)等譬挚,
MyISAM不支持事務(wù)、行級鎖酪呻、外鍵减宣,有一個毫無疑問的缺陷就是崩潰后無法安全恢復(fù)。- 優(yōu)勢是訪問的速度快玩荠,對事務(wù)完整性沒有要求或者以
select
漆腌、insert
為主的應(yīng)用- 針對數(shù)據(jù)統(tǒng)計有額外的常數(shù)存儲。故而 count(*) 的查詢效率很高
- 數(shù)據(jù)文件結(jié)構(gòu):
.MYD
存儲數(shù)據(jù)阶冈,.MYI
存儲索引闷尿,.frm
存儲表結(jié)構(gòu)(8.0更改為.sdi
)- 應(yīng)用場景:只讀應(yīng)用或者以讀為主的業(yè)務(wù)
2.3 Archive 引擎:用于數(shù)據(jù)存檔
只支持讀和寫
2.4 Blackhole 引擎:丟棄寫操作,讀操作會返回空內(nèi)容
2.5 CSV 引擎:存儲數(shù)據(jù)時女坑,以逗號分隔各個數(shù)據(jù)項
使用案例
CREATE TABLE test (i INT NOT NULL, c CHAR(10) NOT NULL) ENGINE = CSV;
INSERT INTO test VALUES(1,'record one'),(2,'record two');
創(chuàng)建CSV表還會創(chuàng)建相應(yīng)的元文件 填具,用于 存儲表的狀態(tài)和表中存在的行數(shù) 。此文件的名稱與表的名稱相同堂飞,后綴為 CSM 灌旧。如圖所示
2.6 Memory 引擎:置于內(nèi)存的表
2.7 Federated 引擎:訪問遠(yuǎn)程表
2.8 Merge引擎:管理多個MyISAM表構(gòu)成的表集合
2.9 NDB引擎:MySQL集群專用存儲引擎
3. MyISAM和InnoDB
對比項 | MyISAM | InnoDB |
---|---|---|
外鍵 | 不支持 | 支持 |
事務(wù) | 不支持 | 支持 |
行表鎖 | 表鎖,即使操作一條記錄也會鎖住整個表绰筛,不適合高并發(fā)的操作 | 行鎖枢泰,操作時只鎖某一行,對其它行無影響铝噩,適合高并發(fā)的操作 |
緩存 | 只緩存索引衡蚂,不緩存真實數(shù)據(jù) | 不僅緩存索引還要緩存真實數(shù)據(jù),對內(nèi)存要求較高,而且內(nèi)存大小對性能有決定性的影響 |
關(guān)注點 | 性能:節(jié)省資源毛甲、消耗少年叮、簡單業(yè)務(wù) | 事務(wù):并發(fā)寫、事務(wù)玻募、更大資源 |