【Mysql系列】——详细剖析数据库中的存储引擎

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 存储引擎是数据库中非常关键的部分,它就像是飞机、火箭中的引擎那样。我们能不能把飞机上的存储引擎发到火箭上去呢? 显然是不可能的,因为引擎的使用是要看使用的场景的。而在Mysql中,存储引擎也是一样的,其没有好坏之分。我们需要在合适的场景下使用合适的存储引擎才是我们需要做到位的。存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型。

微信图片_20230427214238.gif

😎博客昵称:博客小梦

😊最喜欢的座右铭:全神贯注的上吧!!!

😊作者简介:一名热爱C/C++,算法,数据库等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

微信图片_20230427160707.gif


前言🙌



   哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【Mysql系列】——详细剖析数据库中的存储引擎~都是精华内容,可不要错过哟!!!😍😍😍


存储引擎


什么是存储引擎?


  存储引擎是数据库中非常关键的部分,它就像是飞机、火箭中的引擎那样。我们能不能把飞机上的存储引擎发到火箭上去呢? 显然是不可能的,因为引擎的使用是要看使用的场景的。而在Mysql中,存储引擎也是一样的,其没有好坏之分。我们需要在合适的场景下使用合适的存储引擎才是我们需要做到位的。存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可以被称为表类型。


Mysql的体系结构:


Mysql的体系结构分为四层:

MYsql的体系结构如下图所示:

微信图片_20230428164724.png



连接层

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

服务层

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

引擎层

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

存储层

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


存储引擎的查看


存储引擎是有很多的,在MYsql 5.5 之后,默认的存储引擎是InnoDB 存储引擎。之前默认的是Memory 存储引擎。

show engines;

微信图片_20230428164908.png

create table Course(
    Con int primary key auto_increment,
    Cname varchar(10),
    Cpon int,
    Ccredit int
)
show create table course;

微信图片_20230428164942.png


存储引擎的指定


例如,我们可以在创建表的同时,指定此表的存储引擎类型。

create table test_mysql(
    name varchar(10),
    age int
) engine = Memory;

微信图片_20230428165101.png


存储引擎的特点


这里重点介绍以下 InnoDB


InnoDB介绍

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MvSOL 5.5 之后,InnoDB是默认的 MvSOL存储引擎。


InnoDB特点

  • 1.DML操作遵循ACID模型,支持事务;
  • 2.行级锁,提高并发访问性能;
  • 3.支持外键FOREIGN KEY约束,保证数据的完整性和正确性:


InnoDB文件

  • 1.xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
  • 2.参数:innodb file per table

微信图片_20230428165257.png


最后用一张图,来展示一下InnoDB 的逻辑存储结构。

微信图片_20230428165300.png

微信图片_20230428165305.png


总结:InnoDB 是支持事务的,而MyISAM不支持;InnoDB 是支持行锁的,而MyISAM不支持,支持表锁;InnoDB 是支持外键的,而MyISAM不支持;


存储引擎的选择


微信图片_20230428165421.png


总结撒花💞


   本篇文章旨在分享【Mysql系列】——详细剖析数据库中的存储引擎。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
10 0
|
2天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
|
3天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
15 0
|
4天前
|
存储 关系型数据库 分布式数据库
数据库索引回表困难?揭秘PolarDB存储引擎优化技术
PolarDB分布式版存储引擎采用CSM方案均衡资源开销与可用性。
数据库索引回表困难?揭秘PolarDB存储引擎优化技术
|
11天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
【MySQL-5】DDL的数据库操作:查询&创建&删除&使用(可cv代码+演示图)
|
11天前
|
SQL 关系型数据库 MySQL
【MySQL-1】理解关系型数据库&数据的数据模型
【MySQL-1】理解关系型数据库&数据的数据模型
|
12天前
|
关系型数据库 MySQL 数据库
Docker数据库Mysql
Docker数据库Mysql
|
12天前
|
存储 SQL 关系型数据库
mysql查询数据库表大小怎么操作
mysql查询数据库表大小怎么操作
|
12天前
|
关系型数据库 MySQL PHP
【PHP 开发专栏】PHP 连接 MySQL 数据库的方法
【4月更文挑战第30天】本文介绍了 PHP 连接 MySQL 的两种主要方法:mysqli 和 PDO 扩展,包括连接、查询和处理结果的基本步骤。还讨论了连接参数设置、常见问题及解决方法,如连接失败、权限和字符集问题。此外,提到了高级技巧如使用连接池和缓存连接信息以优化性能。最后,通过实际案例分析了在用户登录系统和数据管理中的应用。