数据库的引擎

数据库引擎是用于存储、处理和保护数据的核心服务。

数据库引擎的类型

Innodb

Innodb是MySQL 5.5或更高版本的默认存储引擎。他提供了事务安全(ACID兼容)表,支持外键引用完整性约束。提交、回滚和紧急恢复功能来保护数据。它还支持行级锁定。
支持外键,保持数据的一致性和完整性
innoDB拥有自己独立的缓冲池,常用的数据和索引都在缓存中
InnoDB 物理文件结构为:
.frm 文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等;
.ibd文件或 .ibdata文件: 这两种文件都是存放 InnoDB 数据的文件,之所以有两种文件形式存放 InnoDB 的数据,是因为 InnoDB 的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据(.ibdata),还是用独享表空间存放存储数据(.ibd)。

ISAM引擎

ISAM读取数据非常快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。

MYISAM引擎

MYISAM是MYSQL的ISAM扩展格式和缺省的数据库引擎(Mysql5.1前)。提供ISAM里所没有的索引和字段管理的大量功能,MYISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。
MYISAM强调了快速读取操作。
每个MyISAM在磁盘上存储成三个文件,每一个文件的名字均以表的名字开始,扩展名指出文件类型。
.frm 文件 存储 表定义;
.MYD (MYData)文件 存储表的数据;
.MYI (MYIndex)文件 存储表的索引。

MEMORY存储引擎

MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。
MEMORY不支持BLOB或TEXT列

HEAP引擎

HEAP允许只驻留在内存里的临时表格。

ARCHIVE引擎

这个引擎只允许插入和查询,不允许修改和删除。

BERKLEYDB引擎

InnoDB和MyISAM 引擎

InnoDB 支持事务,MyISAM 不支持事务。 这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
InnoDB 支持外键,而 MyISAM 不支持。 对一个包含外键的 InnoDB 表转为 MYISAM 会失败;
InnoDB 是聚簇索引,MyISAM 是非聚簇索引。
聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。
但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
InnoDB 不保存表的具体行数,执行select count(*) from table 时需要全表扫描。
而 MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。
MyISAM一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
InnoDb和MYISAM比较

InnoDB和MYISAM比较

上述内容来源博客 https://blog.csdn.net/fuhanghang/article/details/124147367

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容