Mysql详细剖析数据库中的存储引擎

 更新时间:2023年03月27日 15:38:07   作者:博客小梦  
这篇文章详细剖析了数据库中的存储引擎,存储引擎是数据库中非常关键的部分,有感兴趣的小伙伴可以参考阅读本文

前言🙌

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

存储引擎

什么是存储引擎?

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

Mysql的体系结构:

Mysql的体系结构分为四层:

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

连接层

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

服务层

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

引擎层

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

存储层

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

存储引擎的查看

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

show engines;

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

show create table course;

存储引擎的指定

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

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

存储引擎的特点

这里重点介绍以下 InnoDB

InnoDB介绍

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

InnoDB特点

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

 InnoDB文件

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

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

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

存储引擎的选择

总结撒花💞

本篇文章旨在分享【Mysql系列】——详细剖析数据库中的存储引擎。希望大家通过阅读此文有所收获!😘

 以上就是Mysql详细剖析数据库中的存储引擎的详细内容,更多关于剖析数据库的存储引擎的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL千万数据量深分页优化流程(拒绝线上故障)

    MySQL千万数据量深分页优化流程(拒绝线上故障)

    这篇文章主要为大家介绍了MySQL千万数据量深分页优化拒绝线上故障,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL表操作插入数据insert语句学习(小白入门篇)

    MySQL表操作插入数据insert语句学习(小白入门篇)

    这篇文章主要为大家介绍了MySQL表操作插入数据insert语句学习小白入门篇,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 解析MySQL设置当前时间为默认值的方法

    解析MySQL设置当前时间为默认值的方法

    本篇文章是对MySQL设置当前时间为默认值的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL在不知道列名情况下的注入详解

    MySQL在不知道列名情况下的注入详解

    这篇文章主要给大家介绍了关于MySQL在不知道列名情况下的注入的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • MySQL产生随机数并连接字符串的方法示例

    MySQL产生随机数并连接字符串的方法示例

    这篇文章主要介绍了MySQL产生随机数并连接字符串的方法,简单分析了相关函数,并结合实例形式给出了相应的SQL语句实现方法,需要的朋友可以参考下
    2017-05-05
  • 浅谈mysql导出表数据到excel关于datetime的格式问题

    浅谈mysql导出表数据到excel关于datetime的格式问题

    这篇文章主要介绍了浅谈mysql导出表数据到excel关于datetime的格式问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • MySQL将多条数据合并成一条的完整示例

    MySQL将多条数据合并成一条的完整示例

    我们在使用mysql的时候常会遇到合并的需求,下面这篇文章主要给大家介绍了关于MySQL将多条数据合并成一条的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • MySQL创建和删除表操作命令实例讲解

    MySQL创建和删除表操作命令实例讲解

    这篇文章主要介绍了MySQL创建和删除表操作命令实例讲解,本文讲解了创建表、创建临时表、查看已经创建的mysql表等内容,需要的朋友可以参考下
    2014-12-12
  • MySQL 分库分表实践

    MySQL 分库分表实践

    本文主要介绍了MySQL 分库分表实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 简单了解 MySQL 中相关的锁

    简单了解 MySQL 中相关的锁

    这篇文章主要介绍了简单了解 MySQL 中相关的锁,重点介绍InnoDB中的锁相关知识,包括锁的概念及分类解析,对MySQL锁相关感兴趣的朋友跟随小编一起看看吧
    2021-05-05

最新评论