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