Mysql系列:存储引擎
Posted xingoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql系列:存储引擎相关的知识,希望对你有一定的参考价值。
mysql中支持多种存储引擎,常用的有MyISAM、InnoDB、Memory、Merge等。他们的区别大致如下:
MyISAM
MyISAM是Mysql默认的存储引擎,不支持事务和外键,优势是访问速度快。
支持三种存储格式:静态表、动态表和压缩表。静态表中字段都是固定长度,存储迅速容易缓存;缺点是需要通过空格补位,占用空间多。动态表字段长度不固定,容易产生碎片;压缩表压缩存储,占用磁盘空间更小。
MyISAM适合那些读操作和插入操作为主,更新和删除较少 且 对事务和并发要求不高的场景,比如数仓等。
InnoDB
具有提交、回滚、崩溃恢复的事务机制,相比于MyISAM处理效率低一些,占用更多的磁盘空间来保存数据和索引。
支持外键存储,但是外键在父表中必须有对应的索引。
InnoDB适合那些对事务的完整性和并发场景下的一致性有要求的场景,可以有效的降低删除和更新导致的锁,还能确保事务的完整提交和回滚,适合如计费或财务系统,对数据准确性有比较高要求的系统。
MEMORY
基于内存创建表,访问速度快,默认使用Hash索引。启动的时候可以通过--init-file初始化表,如INSERT INTO ... SELECT
或LOAD DATA INFILE
。
用于存储内容变化不频繁的代码表或者作为中间结果表,提供快速访问。缺点是表的大小有限制。
MERGE
是一组MyISAM表的组合,MERGE表本身没有数据,并作为一个表使用它们,对表的增删改查实际都会变成对底层表的操作。可以有效的避免单个表的大小限制,还可以将表分布在多个磁盘上,适合做数仓等。
参考
以上是关于Mysql系列:存储引擎的主要内容,如果未能解决你的问题,请参考以下文章
MySQL之存储引擎大全 -《从0到1-全面深刻理解MySQL系列-第五篇》