Mysql体系结构分为4层:
1.连接层
最上层是一些客户端和连接服务,包括大多数基于客户端/服务端工具实现的类似于TCP/IP的通信,主要功能是完成一些类似于连接处理、授权认证、安全方案等,在该层上还引入线程池的概念,为通过认证接入的客户端提供线程。
2.服务层
这一层主要完成了大多数的核心服务功能,如SQL接口,SQL解析器,查询优化器、缓存、内置函数执行、所有跨存储引擎的功能也在这一层实现,比如DML、DDL语句封装、存储过程、视图等,都是在这一层完成。
3.引擎层
存储引擎层,存储引擎是真正负责MySQL中数据的储存和提取,服务器通过API和存储引擎进行通信。不同的引擎有着不同的功能,我们可以根据自己的需求,来选择合适的存储引擎,并且数据库中的索引实在存储引擎层实现的。
4.存储层
数据存储层,主要是将数据(日志、索引、二进制日志、错误日志、查询日志、慢查询日志等)存储在文件系统之上(存储到磁盘中),并可以完成与引擎的交互,MySQL他的架构可以在多种不同场景下使用,并发挥良好作用主要体现在储存引擎上,他是可插拔的储存引擎。
存储引擎
默认使用InnoDB,引擎是基于表的,存储引擎也可以被称之为表类型。
默认引擎查看
show create table 表名;
#默认引擎查看 use db_test3; show create table order_db ;
查看所有存储引擎
#查看所有存储引擎 show engines;
存储引擎介绍
常见的引擎如下
1.innoDB 默认
2.MyISAM MySQL 早期版本默认引擎
3.memory 数据存储在内存中,通常作用于缓存或者临时表
引擎的操作
创建指定引擎的数据表
指定引擎MyISAM创建数据表
#创建指定引擎的数据表 create table mytable( id int, name varchar(10) )engine = MyISAM;
#查看见表默认引擎 show create table mytable ;
InnoDB
特点
查询某引擎是否被开启
#查询某引擎是否被开启 show variables like 'innodb_file_per_table';
ON表示正在开启
逻辑存储区域
innoDB会开启一个表空间
innoDB使用场景
引擎:不同场景下使用不同的引擎
MyISAM
MyISAM是早期的默认引擎
特点
MyISAM使用场景
注意:常见面试题
***!!InnoDB引擎与MyISAM引擎的区别?
iinoDB支持事务,MyISAM不支持事务
innoDB支持行锁和表现,而MyISAM仅支持 表锁,不支持行锁
innoDB支持外键,MyISAM不支持外键
Memory
基于缓存的引擎
Memory引擎的表数据存储在内存中,所以导致会受到硬件问题,断电问题影响(一旦服务器关闭,数据就会消失),只能将Memory引擎的表作为临时表或者缓存来使用
特点
创建指定引擎的数据表
指定引擎Memory创建数据表
#创建指定引擎的数据表 create table myMemory ( id int, name varchar(10) )engine=Memory;
创建出的是xxx.sdi:储存表结构信息
使用场景总结
因为是基于缓存的引擎,所以可替代性强