目录
1.常用的存储引擎?InnoDB与MyISAM的区别?
存储引擎:
存储引擎就是存储数据、建立索引、更新、查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。
InnoDB存储引擎:
InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL 5.5之后,InnoDB是默认的MySQL存储引擎。由于支持事务,支持外键,支持行级锁,所以在绝大多数场景下都是最佳选择。
特点:
- DML操作遵循ACID模型,支持事务。
- 支持行级锁(行级锁是MySQL中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁),可以提高并发访问的性能。
- 支持FOREIGN KEY约束(外键约束),保证数据的完整性和正确性。
- xxx.ibd文件:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件。存储该表的表结构(frm、sdi),数据和索引。
MyISAM存储引擎:
MyISAM是MySQL早期的默认存储引擎(5.5版本之前)。适用于对事务的完整性没有要求,或以select,insert为主的应用场景,比如Web,数据仓库等等。
特点:
- 不支持事务。
- 不支持外键。
- 支持表锁(表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁),但是不支持行锁。
- 访问速度快。
- xxx.sdi:存储表结构信息。xxx.MYD:存储数据。xxx.MYI:存储索引。
Memory存储引擎:
Memory引擎的表数据是存储在内存中的,由于受到硬件问题或者断电问题的影响,无法保障数据的安全性,所以只能将这些表作为临时表或者缓存来使用。
特点:
- 数据存放在内存之中,访问的速度快。