概述
目录
- 1. 存储引擎的分类
- 1.1 MyISAM
- 1.2 InnoDB
- 1.3 CSV
- 1.4 Archive
- 1.5 Memory
- 1.6 Federated
1. 存储引擎的分类
MySQL 有多种存储引擎,目前常用的是 MyISAM
和 InnoDB
这两个引擎,除了这两个引擎以为还有许多其他引擎,有官方的,也有一些公司自己研发的。这篇文章主要简单概述一下常用常见的 MySQL 引擎,一则这是面试中常被问到的问题,二则这也是数据库设计中不可忽略的问题,用合适的引擎可以更好的适应业务场景,提高业务效率。
1.1 MyISAM
- MyISAM 是 MySQL 5.5.5 之前的默认引擎,它支持
B-tree/FullText/R-tree
索引类型。 - MyISAM存储引擎表是由MYD(
数据信息
)和MYI(索引信息
)组成的:
- 锁级别为
表锁
,表锁优点是开销小,加锁快;缺点是锁粒度大,发生锁冲动概率较高,容纳并发能力低,这个引擎适合查询为主的业务。 - 此引擎
不支持事务,也不支持外键
。 - MyISAM强调了快速读取操作。它存储表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。
1.2 InnoDB
- InnoDB 存储引擎最大的亮点就是支持事务,支持回滚,它支持
Hash/B-tree
索引类型。 - 锁级别为
行锁
,行锁优点是适用于高并发的频繁表修改,高并发是性能优于 MyISAM。缺点是系统消耗较大,索引不仅缓存自身,也缓存数据,相比 MyISAM 需要更大的内存。 - InnoDB 中不保存表的具体行数,也就是说,执行 select count(*) from table时,InnoDB 要扫描一遍整个表来计算有多少行。
支持事务,支持外键
。
1.3 CSV
- CSV是
文件系统存储
的方式,数据以文本方式储存在文件中 - 以CSV格式进行数据存储(逗号隔开,引号)
- 所有的列必须都是不能为NULL的
不支持索引
(不适合大表,不适合在线处理)- 可以对数据文件直接编辑(保存文本文件内容)
- 适合做为数据交换的中间表(能够在服务器运行的时候,拷贝和拷出文件,可以将电子表格存储为CSV文件再拷贝到MySQL数据目录下,就能够在数据库中打开和使用。同样,如果将数据写入到CSV文件数据表中,其它web程序也可以迅速读取到数据。
1.4 Archive
- 以zlib对
表数据进行压缩
,磁盘I/O更少 - 数据存储在ARZ为后缀的文件中
- 只支持
insert
和select
操作(支持行级锁
和缓冲区
,可以实现高并发的插入) 只允许在自增ID列上加索引
- Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。当数据量非常大的时候Archive的插入性能表现会较MyISAM为佳。
- 适用于日志和数据采集类应用(不支持OLTP)
1.5 Memory
- Memory 是内存级别存储引擎,数据存储在内存中,所以他能够存储的数据量较小,它支持
Hash/B-tree
索引类型。 - 因为内存的特性,所以所有的字段都是
固定长度
且不支持BLOG和TEXT等大字段
。锁级别为表锁
,不支持事务
。但访问速度非常快,并且默认使用 hash 索引
。 - Memory存储引擎使用存在内存中的内容来创建表,每个Memory表只实际对应一个磁盘文件,在磁盘中表现为.frm文件。
1.6 Federated
- 提供了访问远程Mysql服务器上表的方法
- 本地不储存数据,数据全部放到远程服务器上面
- 本地需要保存表的结构和远程服务器的连接信息
最后
以上就是传统咖啡豆为你收集整理的Mysql基础知识,存储引擎1. 存储引擎的分类的全部内容,希望文章能够帮你解决Mysql基础知识,存储引擎1. 存储引擎的分类所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复