课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据存储于处理是数据库的基本功能之一,而这些功能的实现都是基于一个强大的数据库存储引擎,下面我们就通过案例分析来了解一下,数据库常用存储引擎类型都有哪些。
MyISAM
在5.1版本之前,MyISAM是MySQL的默认存储引擎,MyISAM并发性比较差,使用的场景比较少,主要特点是
不支持事务操作,ACID的特性也就不存在了,这一设计是为了性能和效率考虑的。
不支持外键操作,如果强行增加外键,MySQL不会报错,只不过外键不起作用。
MyISAM默认的锁粒度是表级锁,所以并发性能比较差,加锁比较快,锁冲突比较少,不太容易发生死锁的情况。
MyISAM会在磁盘上存储三个文件,文件名和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、MYI(MyIndex,存储索引)。这里需要特别注意的是MyISAM只缓存索引文件,并不缓存数据文件。
MyISAM支持的索引类型有全局索引(Full-Text)、B-Tree索引、R-Tree索引
Full-Text索引:它的出现是为了解决针对文本的模糊查询效率较低的问题。
B-Tree索引:所有的索引节点都按照平衡树的数据结构来存储,所有的索引数据节点都在叶节点
R-Tree索引:它的存储方式和B-Tree索引有一些区别,主要设计用于存储空间和多维数据的字段做索引,目前的MySQL版本仅支持geometry类型的字段作索引,相对于BTREE,RTREE的优势在于范围查找。
数据库所在主机如果宕机,MyISAM的数据文件容易损坏,而且难以恢复。
增删改查性能方面:SELECT性能较高,适用于查询较多的情况
InnoDB
自从MySQL5.1之后,默认的存储引擎变成了InnoDB存储引擎,相对于MyISAM,InnoDB存储引擎有了较大的改变,它的主要特点是
支持事务操作,具有事务ACID隔离特性,默认的隔离级别是可重复读(repetable-read)、通过MVCC(并发版本控制)来实现的。能够解决脏读和不可重复读的问题。
InnoDB支持外键操作。
InnoDB默认的锁粒度行级锁,并发性能比较好,会发生死锁的情况。
和MyISAM一样的是,InnoDB存储引擎也有.frm文件存储表结构定义,但是不同的是,InnoDB的表数据与索引数据是存储在一起的,都位于B+数的叶子节点上,而MyISAM的表数据和索引数据是分开的。
InnoDB有安全的日志文件,这个日志文件用于恢复因数据库崩溃或其他情况导致的数据丢失问题,保证数据的一致性。
InnoDB和MyISAM支持的索引类型相同,但具体实现因为文件结构的不同有很大差异。
增删改查性能方面,果执行大量的增删改操作,推荐使用InnoDB存储引擎,它在删除操作时是对行删除,不会重建表。
MEMORY
MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表实际只对应一个磁盘文件,格式是.frm。MEMORY类型的表访问速度很快,因为其数据是存放在内存中。默认使用HASH索引。
MERGE
MERGE存储引擎是一组MyISAM表的组合,MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,实际上是对内部的MyISAM表进行的。MERGE表在磁盘上保留两个文件,一个是.frm文件存储表定义、一个是.MRG文件存储MERGE表的组成等。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。