MySQL进阶篇 - 存储引擎

时间:2024-10-03 07:31:18

01 MySQL体系结构

【1】索引是在存储引擎层实现的,不同的存储引擎,索引的结构是不一样的。

【2】InnoDB引擎是MySQL5.5版本之后默认的存储引擎。

【3】MySQL体系结构分为客户端和服务器,服务器又分为4个层次。

02 存储引擎简介

【1】引擎:发动机,发动机是一个机器的核心部分。不同的引擎有不同的应用场景,引擎之间是没有好坏之分的。

【2】存储引擎:

   ① 是MySQL中特有的,它是MySQL数据库中存储数据,建立索引,更新/查询数据等技术实现方式。

   ② 不同的存储引擎在存储数据,建立索引,更新/查询数据等时采用的机制是不一样的。

   ③ 存储引擎是基于数据库表的,而不是基于数据库的,也就是说在一个数据库的多张表是可以选择不同的存储引擎的。

【3】展示当前数据库支持的所有存储引擎:show engines;

【4】如何指定存储引擎:create table xx () engine = 存储引擎,... ;

         注意:MySQL5.5之后,不写默认是InnoDB存储引擎。

03 存储引擎特点

03_01 InnoDB

【1】介绍:InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎

【2】特点:

   ① 事务:DML操作遵循ACID模型,支持事务。

   ② 行级锁:提高并发访问性能。

   ③ 外键:支持外键foreign key约束,保证数据的完整性和正确性。

【3】文件:每一个使用InnoDB存储引擎的表,都会有一个表空间文件,这个文件名叫:表名.ibd,这个文件中存储了表结构,表中的数据,索引。

         补充:表结构早期存储在frm文件中,MySQL8.0之后表结构都存储在了sdi这个数据字典中,后来sdi又融入到了ibd表空间文件中。

         参数:innodb_file_per_table,决定到底是多张表共用一个表空间文件,还是每一个表都有自己的表空间文件。目前MySQL8.0中这个开关是打开的,也就意味着,每一张表都对应着一个表空间文件。

【4】InnoDB存储引擎的逻辑存储结构:SQL优化会用到!

03_02 MyISAM

【1】介绍:MySIAM是MySQL早期默认的存储引擎

【2】特点:

   ① 不支持事务,不支持外键

   ② 支持表锁,不支持行锁

   ③ 访问速度快

【3】文件:

   ① xxx.sdi:存储表结构信息

   ② xxx.MYD:存储数据

   ③ xxx.MYI:存储索引

03_03 Memory

【1】介绍:Memory引擎的表数据是存储在内存中的,由于受到硬件问题,或断电问题的影响,只能将这些表作为临时表或缓存使用

【2】特点:

   ① 由于数据都是存储在内存中的,所以访问速度快

   ② 支持hash索引

【3】文件:xxx.sdi:存储表结构信息

03_04 常见的三个存储引擎之间的区别

【面试题】:InnoDB与MyISAM的区别:

     ① InnoBD支持事务,MyISAM不支持事务

     ② InnoDB支持行级锁,MyISAM支持表锁

     ③ InnoDB支持外键,MySIAM不支持外键

04 存储引擎选择