什么是存储引擎:
存储引擎是 MySQL 的核心,是负责 MySQL 中数据的存储和提取。存储引擎就是存储数据、建立索引、更新、查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。在 MySQL5.5 之后,InnoDB 是 MySQL 默认的存储引擎。
在数据库中输出 SHOW ENGINES 可以查看MySQL所有的存储引擎
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hLE0xtPv-1662620990115)(C:\Users\10642\AppData\Roaming\Typora\typora-user-images\image-20220831191608377.png)]](https://1000bd.com/contentImg/2023/11/04/151822013.png)
介绍:
InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB 是默认的 MySQL 引擎。
特点:
支持事务。行级锁,提高并发访问性能。支持外键约束,保证数据的完整性和正确性。文件:
xxx.ibd: xxx 代表表名,InnoDB 引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
参数:innodb_file_per_table:默认开启,每张表对应一个表空间。
InnoDB逻辑存储结构
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fbdamUo7-1662620990120)(C:/Users/10642/AppData/Roaming/Typora/typora-user-images/image-20220901110738921.png)]](https://1000bd.com/contentImg/2023/11/04/151822010.png)
介绍:
MyISAM 是 MySQL 早期的默认存储引擎。
特点:
不支持事务,不支持外键表锁,不支持行锁文件:
介绍:
Memory 引擎的表数据是存储在内存中的,受硬件问题、断电问题的影响,只能将这些表作为临时表或缓存使用。
特点:
内存中,速度快hash索引(默认)文件:
| 特点 | InnoDB | MyISAM | Memory |
|---|---|---|---|
| 存储限制 | 64TB | 有 | 有 |
| 事务安全 | 支持 | - | - |
| 锁机制 | 行锁 | 表锁 | 表锁 |
| B+tree索引 | 支持 | 支持 | 支持 |
| Hash索引 | - | - | 支持 |
| 全文索引 | 支持(5.6版本之后) | 支持 | - |
| 空间使用 | 高 | 低 | N/A |
| 内存使用 | 高 | 低 | 中等 |
| 批量插入速度 | 低 | 高 | 高 |
| 支持外键 | 支持 | - | - |
并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,则 InnoDB 是比较合适的选择