MySQL体系结构之存储引擎

MySQL体系结构之存储引擎,第1张

文章目录 MySQL体系结构客户端层服务器1.连接层2.服务层(DML,DDL)3.引擎层3.1.1 存储引擎概念:old_key:3.1.2 MySQL 的常用的存储引擎:skull:3.1.3 主要区别:santa:3.1.4 不同的存储引擎的结构是不一样的.需要用到哪些存储引擎,只需更换即可.:poultry_leg:3.1.5 InnoDB :one:3.1.6 MyISAM :two:3.1.7 Memory :three:3.1.8 存储引擎**区别及特点** :spiral_notepad:3.1.9 存储引擎选择 :selfie: 4.存储层4.存储层

MySQL体系结构

连接层(客户端)

服务器(服务端)

引擎层(服务端)

存储层(服务端)

(图1-1)

客户端层

客户端连接器(支持哪些程序语言)

Native C APL, JDBC, ODBC, NET, PHP, Perl, Python, Ruby ,Cobol

服务器 1.连接层

主要接收客户端的连接,进行客户端的连接处理(用户,密码校验),完成客户端的认证授权(用户具有哪些 *** 作权限[增删改查=>数据库/表])

2.服务层(DML,DDL) SQL接口解析器查询优化器缓存

注意:

1.第二层主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行.

2.所有跨引擎的实现都是在服务层实现的.

3.引擎层

存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。数据库中的索引是在存储引擎层实现的。

3.1.1 存储引擎概念🗝

存储引擎就是存储数据,建立索引,更新/查询数据等技术的实现方式.存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型.

3.1.2 MySQL 的常用的存储引擎💀 InnoDB:MySQL5.5版本及之后默认的存储引擎.MyISAM:MySQL5.5版本之前默认的存储引擎. 3.1.3 主要区别🎅

MyISAM 是表锁定,限制了数据库读/写的性能;

MyISAM 不支持事务,基于以上两点,InnoDB 引擎可以锁到行。

3.1.4 不同的存储引擎的结构是不一样的.需要用到哪些存储引擎,只需更换即可.🍗

1.To prepare data

show databases;  // 查询所有数据库
use bag_name; // 使用数据库bag_name
show tables; // 显示所有表
create table account(
   id int not null auto_increment comment '主键ID'  primary key,
   name varchar(18) default null comment '姓名',
   money int default null comment '余额'
) auto_increment=5 charset=utf8mb4 comment '账号表';

// auto_increment=5  默认id=5,为第一条数据
// charset=utf8mb4 数据编码类型 

2.For example,

-- 查询建表语句 -- 默认存储引擎 InnoDB(不指定时)
show create table account;

-- 查询 当前数据库 支持的存储引擎
show engines; // 如 图2-1 所示

// 参数说明:
// Supports transactions 支持事务
// row-level locking 支持行级锁
// foreign keys 支持外键
// stored in memory 存储在内存当中
// userful for temporary tables 通常做临时表的内存缓存

-- 创建表 my_myisam ,并指定 MyISAM 存储引擎
create table my_myisam(
	id int,
  name varchar(6)
) engine = MyISAM;

show create table my_myisam;

-- 创建表 my_memory ,并指定 Memory 存储引擎

create table my_memory(
	id int,
  name varchar(6)
) engine = MEMORY;

show create table my_memory;

💖 (图2-1)

3.1.5 InnoDB 1️⃣

a. 特点(默认mysql5.5后)

DML *** 作遵循ACID模型,支持事务;

行级锁,提高并发访问性能;

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

总结:InnoDB支持事务,行级锁,外键.

b.(存储的)文件

xxx.ibd :xxx 代表的是表名(ibd二进制文件),InnoDB引擎的每张表都会对应一个表空间文件,存储该表结构(frm,sdi),数据和索引.

每个mysql数据库有都有对应的ibd 文件,

参数: innodb_file_per_table

c. cmd终端 查询 emp表的ibd文件

C:\ProgramData\MySQL\MySQL Server 8.0\Data\haian>ibd2sdi emp.ibd

d. InnnoDB – 逻辑存储结构(图2-2)

TableSpece: 表空间Segment:段Extent:区(1M)Page:页(16K)Row:行

(图2-2)

3.1.6 MyISAM 2️⃣

a. MyISAM 是MySQL早期的默认存储引擎

b. 特点

不支持事务.不支持外键支持表锁访问速度快

c. 文件(xxx表名)

xxx.sdi : 存储表结构信息

xxx.MYD : 存储数据

xxx.MYI : 存储索引

3.1.7 Memory 3️⃣

a. Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

b.特点

存储在内存中

hash索引(默认)

文件

xxx.sdi :存储表结构信息

3.1.8 存储引擎区别及特点 🗒
特点InnoDBMyISAMMemory
存储限制64TB
事务安全支持--
锁机制行锁表锁表锁
B+tree支持支持支持
Hash索引--支持
全文索引全文索引支持(5.6版本之后)支持-
空间使用N/A
内存使用中等
批量插入速度
支持外键支持--
3.1.9 存储引擎选择 🤳 InnoDB: 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据 *** 作除了插入和查询之外,还包含很多的更新、删除 *** 作,那么InnoDB存储引擎是比较合适的选择。MyISAM : 如果应用是以读 *** 作和插入 *** 作为主,只有很少的``更新和删除` *** 作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。MeMory: 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存.MeMory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性.

总结:

存储引擎真正负责MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信.不同的存储引擎具有不同的功能,根据需求选择合适的存储引擎.

4.存储层 MeMory: 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存.MeMory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性.

总结:

存储引擎真正负责MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信.不同的存储引擎具有不同的功能,根据需求选择合适的存储引擎.

4.存储层

主要存储数据库的相关数据,包含一系列的日志(错误日志,查询日志,慢查询日志二进制日志),这些日志都会存储在磁盘文件当中,并完成与存储引擎的交互。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/2990386.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-09-23
下一篇2022-09-23

发表评论

登录后才能评论

评论列表(0条)

    保存