MySQL的表的存儲是有其存儲引擎的稳析,表分為表結(jié)構(gòu)洗做、表數(shù)據(jù)、表引擎與表中的索引等等信息彰居。
1诚纸、存儲引擎一般分幾大類:
- InnoDB
- MyiASM
- Memery
- ...
2、InnoDB存儲引擎
MySQL 5.7版本中業(yè)務(wù)表的默認存儲引擎
- InnoDB給MySQL的表提供了事務(wù)陈惰、回滾畦徘、崩潰修復(fù)能力和多版本并發(fā)控制的事務(wù)安全。
- InnoDB支持自動增長列AUTO INCREMENT奴潘,支持外鍵FOREIGN KEY旧烧。
- InnoDB中,創(chuàng)建的表結(jié)構(gòu)存儲在.frm文件中画髓,數(shù)據(jù)和索引存儲在innodb_data_home_dir和innodb_data_file_path定義的表空間中掘剪。
- 此引擎缺陷在于其讀寫效率稍差,占用的數(shù)據(jù)空間相對較大奈虾。
3夺谁、MyISAM存儲引擎
此引擎很常見廉赔,曾是MySQL的默認存儲引擎。
(MySQL的系統(tǒng)表的默認存儲引擎)
- MyISAM存儲引擎的表存儲成三個文件匾鸥,文件的名字與表名相同蜡塌,擴展名分別為frm、myd和myi勿负,其中馏艾,frm文件存儲表的結(jié)構(gòu),myd存儲數(shù)據(jù)奴愉,myi存儲索引琅摩。
- 基于MyISAM存儲引擎的表支持三種不同的存儲格式,包括靜態(tài)性锭硼、動態(tài)性和壓縮性房资,指的是字段的長度。
- MyISAM存儲引擎的優(yōu)勢在于占用空間小檀头、處理速度快竖伯,缺點在于不支持事務(wù)的完整性和并發(fā)性捏悬。
4弛饭、MEMORY存儲引擎
此引擎較特殊知态,其使用存儲在內(nèi)存中的內(nèi)容來創(chuàng)建表嵌施,而且將所有數(shù)據(jù)也放在內(nèi)存中呻疹,因此适贸,處理速度極快戈钢。但當(dāng)內(nèi)存出現(xiàn)異常將會影響到數(shù)據(jù)的完整性馆蠕,因此基于此引擎的表的生命周期很短期升,一般都是一次性的,因此很少用到互躬。
MEMORY存儲引擎默認使用哈希索引播赁。
5、存儲引擎選擇
- 一般來說吼渡,如果需要對事物的完整性要求表較高容为,要求實現(xiàn)并發(fā)控制,或者需要頻繁的進行更新寺酪、刪除操作的數(shù)據(jù)庫坎背,可以選擇InnoDB;
- 如果主要用于插入新記錄和讀出記錄寄雀,或者應(yīng)用的完整性得滤、并發(fā)性要求很低,可以選擇MyISAM盒犹;
- 如需很快的讀寫速度懂更、對數(shù)據(jù)的安全性要求較低眨业,且相對較小的數(shù)據(jù)庫表,可以選擇MEMORY沮协。
當(dāng)然龄捡,同一個數(shù)據(jù)庫中可以使用多種存儲引擎的表。
歡迎關(guān)注慷暂,以后會不定時更新聘殖!
PS: 若你覺得可以、還行行瑞、過得去就斤、甚至不太差的話,可以“關(guān)注”一下蘑辑,就此謝過!