目录
1、什么是数据库引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。
MySQL是一款流行的关系型数据库管理系统(RDBMS),其中提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。数据库引擎可以看做是数据库的内部核心,用于处理数据的存储、索引和检索等功能。在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。MySQL 8.0支持的存储引擎有InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE等。
图片来源:https://www.cnblogs.com/du-z/p/11166257.html
通过SHOW ENGINES语句可以查看系统支持的引擎类型。
mysql> SHOW ENGINES;
2、MySQL的数据库引擎有哪些
MySQL 数据库常用的引擎有以下几种类型:
1. MyISAM 引擎:MyISAM 是 MySQL 默认的存储引擎,它支持表级锁定,但不支持事务和外键约束。MyISAM是一种基于表的引擎,支持全文搜索和压缩表。适用于需要大量查询的场景,但在写入频繁的情况下性能较差。它特别适合于读密集型的应用,比如 Web 应用。
2. InnoDB 引擎:InnoDB 支持事务和外键约束,是MySQL中最广泛使用的事务性数据库引擎,支持ACID(原子性、一致性、隔离性、持久性)事务。它是 MySQL 中最常用的存储引擎之一,也是 MySQL 5.5 版本之后默认的存储引擎。它采用行级锁定,因此支持高并发的读写操作,适用于高并发写入和读取的应用场景。
3. MEMORY 引擎:MEMORY 存储引擎将表格数据存储在内存中,因此读写速度非常快。但是,它具有容量限制,并且在 MySQL 服务关闭时,表中的数据会丢失。
4. NDB 引擎:NDB 存储引擎是 MySQL 集群的默认存储引擎,它使用多个 MySQL 实例来共同管理数据,提高了系统的可用性和可扩展性。它支持 ACID 事务和高可用性,支持多主复制和高可用性,适用于需要大规模扩展的场景,如互联网和电信行业。
5. ARCHIVE 引擎:ARCHIVE 存储引擎适合于仅仅需要插入和查询数据的情况。它不支持更新和删除操作,但可以大大降低存储空间的使用,适合于数据归档和备份。
6. CSV 引擎:CSV 存储引擎允许将数据以 CSV 格式导入到 MySQL 中。它不支持索引和事务。CSV引擎可以作为一种数据交换的机制,对于临时存储数据非常有用。 CSV存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。
7. Blackhole 引擎:Blackhole 存储引擎将数据写入到 /dev/null 中,因此不会实际存储任何数据。它主要用于复制数据到其他 MySQL 服务器中。
3、Inodb和MyISAM引擎的区别
图片来源:https://blog.51cto.com/u_16099226/7044499
InnoDB引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL 5.5.5之后,InnoDB作为默认存储引擎,主要特性如下:
- InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表与其他MySQL表的类型混合起来,甚至在同一个查询中也可以混合。
- InnoDB存储引擎完全与MySQL服务器整合,为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引存在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。
- InnoDB支持外键完整性约束(FOREIGN KEY)。存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6B的ROWID,并以此作为主键。
- InnoDB被用在众多需要高性能的大型数据库站点上。InnoDB不创建目录,使用InnoDB时,MySQL将在数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。MyISAM的主要特性如下:
- 在支持大文件(达63位文件长度)的文件系统和操作系统上被支持。
- 当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块以及若下一个块被删除则扩展到下一块来自动完成。
- 每个MyISAM表最大的索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16个。
- 最大的键长度是1000B,这也可以通过编译来改变。对于键长度超过250B的情况,一个超过1024B的键将被用上。
- BLOB和TEXT列可以被索引。
- NULL值被允许在索引的列中,这个值占每个键的0~1个字节。
- 所有数字键值以高字节优先被存储,以允许一个更高的索引压缩。
- 每个表一个AUTO_INCREMENT列的内部处理。MyISAM为INSERT和UPDATE操作自动更新这一列,这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。
- 可以把数据文件和索引文件放在不同目录。
- 每个字符列可以有不同的字符集。
- 有VARCHAR的表可以固定或动态记录长度。
- VARCHAR和CHAR列可以多达64KB。
参考:
https://www.yzktw.com.cn/post/1008242.html
http://wap.mobiletrain.org/about/BBS/115036.html
https://baijiahao.baidu.com/s?id=1760961543030415963&wfr=spider&for=pc
————————————————————————————————————
感谢阅读,码字不易,多谢点赞!如有不当之处,欢迎反馈指出,感谢!