1. 什么是存储引擎
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能
MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE,可以使用SHOW ENGINES语句查看系统所支持的引擎类型,InnoDB 事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MyISAM 是基于 ISAM 的存储引擎,并对其进行扩展,是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一,MyISAM 拥有较高的插入、查询速度,但不支持事务,MEMORY 存储引擎将表中的数据存储到内存中,为查询和引用其他数据提供快速访问,InnoDB 是系统的默认引擎,支持可靠的事务处理
2. MyISAM 存储引擎
每个 MyISAM 表在磁盘上存储成 3 个文件,其中文件名和表名都相同,扩展名分别为
(1)frm(存储表定义)
(2)MYD(MYData,存储数据)
(3)MYI(MYIndex,存储索引)
MyISAM 表还支持 3 种不同的存储格式
(1)静态表(固定长度)
(2)动态表
(3)压缩表
3. InnoDB 存储引擎
InnoDB 是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。MySQL默认的存储引擎为 InnoDB,InnoDB 存储引擎还引入了行级锁定和外键约束,在以下场景中使用 InnoDB 存储引擎是最理想的选择
(1)更新密集的表:InnoDB 存储引擎特别适合处理多重并发的更新请求。
(2)事务:InnoDB 存储引擎是支持事务的标准 MySQL 存储引擎。
(3)自动灾难恢复:与其它存储引擎不同,InnoDB 表能够自动从灾难中恢复。
(4)外键约束:MySQL 支持外键的存储引擎只有 InnoDB。
(5)支持自动增加列 AUTO_INCREMENT 属性
Innodb的数据文件:
(1)ibd:数据表的数据文件
(2)frm:数据表的元数据
(3)opt:存储的是mysql的一些配置信息,如编码、排序的信息
4. 修改默认的存储引擎
(1)创建表,并查看默认用的存储引擎
(2)通过 alter table 修改
(3)通过配置文件修改
(4)通过 create table 创建表时指定存储引擎
(5)临时修改默认的存储引擎
5. 插入一组数据,来比较两个存储引擎的存储效率
(1)设置sql语句结束符
(2)创建两个存储过程
(3)利用存储过程向两个表添加数据