132.【MySQL_进阶】(一)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 132.【MySQL_进阶】

132.【MySQL_进阶篇】

MySQL_进阶

(一)、存储引擎

1.MySQL体系结构

(1).连接层

最上层一些客户端和连接服务,主要完成一些类似于连接处理、认证授权、及相关的安全方案。服务器也会为安全接入的每一个客户端验证它所具有的操作权限。

(2).服务层

第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。

(3).引擎层

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

(4).存储层

主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

2.存储引擎简介

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

(1).查看某张表的数据引擎
show create table 表名;
(2).展示此版本支持的所有存储引擎
show engines;
(3).创建表my_myisam,并指定MyIASM存储引擎
create table my_myisam(
  字段列表
)engine=存储引擎;
(4).存储引擎示列
-- 查询建表语句  (默认存储引擎- INNODB,mysql5.5版本之后都默认INNODB)
show create table account;
-- 查询当前数据库支持的存储引擎
show engines;
-- 创建表my_myisam,并指定MyIASM存储引擎
create table my_myisam(
  id int(4),
  name varchar(10)
)engine=MyISAM;
-- 查看这张表的数据
show create table my_myisam;

3.存储引擎 _ Innodb

(1).Innodb 介绍

Innodb是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,Innodb是默认的MySQL存储引擎

(2).Innodb 特点
  1. DML操作遵循ACID模型,支持事务
  2. 行级锁,提高并发性能问题,只锁一行。
  3. 支持外键 FOREIGN KEY 约束,保证数据的完整性和正确性。
(3).Innodb 磁盘文件

xxx.ibd : xxxx代表的是表名,innodb引擎的每张表都会对应这样一个表空间文件,存储该表结构(frm、adi)、数据和索引。

注意参数: innodb_file_per_table 如果是这个参数是打开的话,就说明每张表都会对应着一个表空间文件。(自MySQL8.0+以上版本默认开启)

show variables like 'innodb_file_per_table';

  1. 假如我们的MySQL是 8.0+ 的话,参数默认开启

假如我们有一张表 account,就有这样的一个account.ibd文件,而在这个ibd文件中不仅存放表结构数据,还会存放该表对应的索引信息。 而该文件是基于二进制存储的,不能直接基于记事本打开,我们可以使用mysql提供的一个指令 ibd2sdi ,通过该指令就可以从ibd文件中提取sdi信息,而sdi数据字典信息中就包含该表show variables like ‘innodb_file_per_table’; 1的表结构。

ibd2sdi 表名.idb;

(4).Innodb 逻辑存储结构
  1. 一个表空间里包含很多段。
  2. 一个区里面包含很多区。
  3. 一个区(内存大小1MB)里面包含很多页;也就是说一个区有64个页
  4. 一个页(内存大小16KB)里面包含很多行。
  5. 一个行里面包含: ①最后操作事务的id。②指针。③字段.

4.存储引擎 _ MyISAM

(1).MyISAM 介绍

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

(2).MyISAM 特点
  1. 不支持事务,不支持外键。
  2. 支持表锁,不支持行锁。
  3. 访问速度快。
(3).MyISAM 磁盘文件
  1. xxx.sdi : 存储表结构数据。
  2. xxx.MYD: 存储数据。
  3. xxx.MYI: 存储引擎。

5.存储引擎 _ Memory

(1).Memory 介绍

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

(2).Memory 特点
  1. 内存存放
  2. hash索引 (默认)
(3).Meory 磁盘文件
  1. xxx.sdi: 存储表结构信息

6.三大存储引擎的区别

最主要的区别时: 事务、锁、外键。

(1).Innodb 和 MyISAM 区别

Innodb: 支持事务、支持行锁、支持外键。

MyISAM: 不支持事务、支持表锁、不支持外键。

(2).三大存储引擎总结

7.存储引擎选择

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的系统应用系统,还可以根式实际情况选择多种存储引擎进行组合。

(1).Innodb (高并发 + 增删改查)

是MySQL的默认存储引擎,支持事务、外键。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么Innodb存储引擎是比较合适的选择。

(2).MyISAM (低并发 + 高读插)

如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对对事务的完整性、并发性要求不是和高,那么选择这个存储引擎是非常合适的。 _日志、评论。

(3).MEMORY (访问速度快)

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
27天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
27天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
27天前
|
SQL 关系型数据库 MySQL
MySQL数据库进阶第五篇(锁)
MySQL数据库进阶第五篇(锁)
|
1月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
1月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
19天前
|
JSON 关系型数据库 MySQL
MySQL常用函数解读:从基础到进阶的全方位指南
MySQL常用函数解读:从基础到进阶的全方位指南
|
27天前
|
SQL 关系型数据库 MySQL
Python进阶第二篇(Python与MySQL数据库)
Python进阶第二篇(Python与MySQL数据库)
|
27天前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
27天前
|
SQL 存储 关系型数据库
MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)
MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)
|
27天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)
MySQL数据库进阶第一篇(存储引擎与Linux系统上安装MySQL数据库)