概述
文章目录
- 前言
- 一、InnoDB
- 二、MyISAM
- 三、MEMORY
- 四、ARCHIVE
- 五、CSV
- 五、对比InnoDB和MyISAM
- 六、总结
前言
内容可能没那么准确,如有问题请留言,我再做修正提示:以下是本篇文章正文内容,下面案例可供参考
一、InnoDB
InnnoDB是MySQL5.5版本之后,默认的内置存储引擎。特性如下:
1. 灾难恢复性较好
2. 支持事物:默认事物隔离级别为可重复读,通过MVCC(并发版本控制)来实现
3. 使用行级锁:可以支持更高的并发
4. 支持外键关联
5. 实现缓冲管理(Buffer Pool):通过缓冲池,将索引和数据缓存起来,加快查询速度
6. InnoDB类型的表,其数据的物理组织形式是聚簇表(Cluster Table),所有数据按照主键索引来组织,数据和索引是在一起的,都位于B+树的叶子节点上
7. 支持热备份:配合一些热备工具,可以支持在线热备份
二、MyISAM
M y ISAM是MySQL5.5版本之钱,默认的内置存储引擎。特性如下:
1. 灾难恢复性不佳:数据所在服务器宕机后,MyISAM数据文件易损坏,而且难恢复
2. 不支持事物
3. 使用表级锁:并发性很差,加锁快,锁冲突较少,所以不太容易发生死锁
4. 不支持外键关联:如果强行增加外键,不会提示错误,只是外键不起作用
5. 实现缓冲管理(Key Cache):只是将索引数据缓存起来
6. 数据储存紧凑,因此可以获得更小的索引和更快的全表扫描性能
7. 支持全文索引:MySQL5.6之后,InnoDB也支持了全文索引,但是MySQL的全文索引基本不会使用,对于全文索引,现在有成熟的解决方案,比如ElasticSearch、Solr、Soginx等
三、MEMORY
MEMORY是将数据存到内存中,和Redis的设计思想类似,主要是为了提高数据的访问数读。特性如下:
1. 使用表级锁
2. 由于数据都在服务器的内存中,所以服务器重启后,所有的数据会丢失
四、ARCHIVE
ARCHIVE适用场景有限,由于其支持压缩,所以主要用来做日志、数据采集表等数据的归档。特性如下:
1. 支持Zlib压缩:数据在插入表之前,会先被压缩
2. 仅支持查询(SELECT)和插入(INSERT)操作:插入的数据只能查询,不能修改和删除
3. 只支持自增键上的索引,不支持其他索引
五、CSV
CSV是将.csv文件作为MySQL的表进行处理,存储格式就是普通的.csv文件,适合做为数据交换的中间表。特性如下:
1. 以 CSV 格式进行数据存储
2. 不支持自增(创建表时,不能设置自增)
3. 不支持索引(由于创建表时主键会自动添加索引,所以也不能设置主键)
4. 不支持空字段(创建表时,不能有空字段)
5. 若修改了 .CSV 文件,则需要 flush tables操作,对数据库的表进行刷新
五、对比InnoDB和MyISAM
对比项 | InnoDB | MyISAM |
---|---|---|
事务 | 支持 | 不支持 |
锁 | 行级锁 | 表级锁 |
外键 | 支持 | 不支持 |
fulltext索引 | 不支持 | 支持 |
CRUD | 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表;DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除 | SELECT,执行查询操作速度快;DELETE,MyISAM执行DELETE是先DROP表,然后重新建表; |
COUNT()查询 | InnoDB 中不保存表的具体行数,也就是说,执行SELECT COUNT(※) FROM table时,InnoDB要扫描一遍整个表来计算有多少行 | SELECT COUNT(※) FROM table,MyISAM只要简单的读出保存好的行数,注意的是,当COUNT(※)语句包含 where条件时,两种表的操作是一样的; |
AUTO_INCREMENT | Innodb必须包含auto_increment的索引 | 可以使用auto_increment类型字段建立索引 |
其他 | 表格难被压缩 | 表格可以被压缩 |
六、总结
使用场景因地制宜
最后
以上就是轻松仙人掌为你收集整理的MySQL存储引擎的种类及应用前言一、InnoDB二、MyISAM三、MEMORY四、ARCHIVE五、CSV五、对比InnoDB和MyISAM六、总结的全部内容,希望文章能够帮你解决MySQL存储引擎的种类及应用前言一、InnoDB二、MyISAM三、MEMORY四、ARCHIVE五、CSV五、对比InnoDB和MyISAM六、总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复