MySQL 进阶(一)【存储引擎】

news2024/11/15 10:36:53

1、存储引擎

1.1、MySQL 体系结构

 

 自上而下可以分为

  • 连接层
    • 接受客户端的连接,完成连接的处理、认证授权、安全方案和最大连接数等
  • 服务层
    • 绝大部分的核心功能都是在服务层完成的,比如SQL 接口(DDL、DML、视图、触发器、存储过程)、解析器、查询优化器和缓存等
  • 存储引擎层
    • 存储引擎控制着数据的存储和提取的方式,服务器通过 API 和存储引擎通信
    • 注意:索引是在存储引擎层实现的,不同的存储引擎索引的结构是不同的
    • InnoDB 是 MySQL 5.5 之后默认的存储引擎
  • 存储层
    • 真正存储数据的地方,除了数据还有各种日志

1.2、存储引擎简介

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

1.2.1、在创建表时,指定存储引擎

CREATE TABLE xx (

)ENGINE=INNODB;

1.2.2、查看当前数据库支持的存储引擎

SHOW ENGINGS;

1.3、存储引擎特点

1.3.1、InnoDB

1)介绍

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

2)特点
  • DML 操作(表数据的CRUD)遵循 ACID 模型,支持事务
  • 行级锁,提升高并发访问性能;
  • 支持外键约束,保证数据的完整性和正确性;
3)文件
  • xxx.ibd:xxx代表表名,每一个 InnoDB 的表都会对应这样一个表空间文件,存储该表的表结构(8.0 之后存储在 sdi 这个数据字典当中)、数据和索引;
  • 参数:innodb_file_per_table(MySQL 8.0 中是 ON,也就是每张表都有一个 InnoDB 文件)

我们可以查看数据库表对应的 InnoDB 文件: 

可以通过指令 "ibd2sdi student.ibd" 来查看这个二进制文件: 

["ibd2sdi"
,
{
        "type": 1,
        "id": 713,
        "object":
                {
    "mysqld_version_id": 80030,
    "dd_version": 80023,
    "sdi_version": 80019,
    "dd_object_type": "Table",
    "dd_object": {
        "name": "student",
        "mysql_version_id": 80030,
        "created": 20240513090135,
        "last_altered": 20240513090135,
        "hidden": 1,
        "options": "avg_row_length=0;encrypt_type=N;key_block_size=0;keys_disabled=0;pack_record=1;stats_auto_recalc=0;stats_sample_pages=0;",
        "columns": [
            {
                "name": "id",
                "type": 4,
                "is_nullable": true,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 1,
                "ordinal_position": 1,
                "char_length": 11,
                "numeric_precision": 10,
                "numeric_scale": 0,
                "numeric_scale_null": false,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "interval_count=0;",
                "se_private_data": "physical_pos=3;table_id=1187;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "int",
                "elements": [],
                "collation_id": 8,
                "is_explicit_collation": false
            },
            {
                "name": "name",
                "type": 16,
                "is_nullable": true,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 1,
                "ordinal_position": 2,
                "char_length": 24,
                "numeric_precision": 0,
                "numeric_scale": 0,
                "numeric_scale_null": true,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "interval_count=0;",
                "se_private_data": "physical_pos=4;table_id=1187;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "varchar(6)",
                "elements": [],
                "collation_id": 255,
                "is_explicit_collation": false
            },
            {
                "name": "sex",
                "type": 16,
                "is_nullable": true,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 1,
                "ordinal_position": 3,
                "char_length": 4,
                "numeric_precision": 0,
                "numeric_scale": 0,
                "numeric_scale_null": true,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "interval_count=0;",
                "se_private_data": "physical_pos=5;table_id=1187;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "varchar(1)",
                "elements": [],
                "collation_id": 255,
                "is_explicit_collation": false
            },
            {
                "name": "age",
                "type": 4,
                "is_nullable": true,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 1,
                "ordinal_position": 4,
                "char_length": 11,
                "numeric_precision": 10,
                "numeric_scale": 0,
                "numeric_scale_null": false,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "interval_count=0;",
                "se_private_data": "default_null=1;physical_pos=6;table_id=1187;version_added=1;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "int",
                "elements": [],
                "collation_id": 255,
                "is_explicit_collation": false
            },
            {
                "name": "DB_ROW_ID",
                "type": 10,
                "is_nullable": false,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 2,
                "ordinal_position": 5,
                "char_length": 6,
                "numeric_precision": 0,
                "numeric_scale": 0,
                "numeric_scale_null": true,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "",
                "se_private_data": "physical_pos=0;table_id=1187;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "",
                "elements": [],
                "collation_id": 63,
                "is_explicit_collation": false
            },
            {
                "name": "DB_TRX_ID",
                "type": 10,
                "is_nullable": false,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 2,
                "ordinal_position": 6,
                "char_length": 6,
                "numeric_precision": 0,
                "numeric_scale": 0,
                "numeric_scale_null": true,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "",
                "se_private_data": "physical_pos=1;table_id=1187;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "",
                "elements": [],
                "collation_id": 63,
                "is_explicit_collation": false
            },
            {
                "name": "DB_ROLL_PTR",
                "type": 9,
                "is_nullable": false,
                "is_zerofill": false,
                "is_unsigned": false,
                "is_auto_increment": false,
                "is_virtual": false,
                "hidden": 2,
                "ordinal_position": 7,
                "char_length": 7,
                "numeric_precision": 0,
                "numeric_scale": 0,
                "numeric_scale_null": true,
                "datetime_precision": 0,
                "datetime_precision_null": 1,
                "has_no_default": false,
                "default_value_null": true,
                "srs_id_null": true,
                "srs_id": 0,
                "default_value": "",
                "default_value_utf8_null": true,
                "default_value_utf8": "",
                "default_option": "",
                "update_option": "",
                "comment": "",
                "generation_expression": "",
                "generation_expression_utf8": "",
                "options": "",
                "se_private_data": "physical_pos=2;table_id=1187;",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "column_key": 1,
                "column_type_utf8": "",
                "elements": [],
                "collation_id": 63,
                "is_explicit_collation": false
            }
        ],
        "schema_ref": "test",
        "se_private_id": 1187,
        "engine": "InnoDB",
        "last_checked_for_upgrade_version_id": 0,
        "comment": "",
        "se_private_data": "",
        "engine_attribute": "",
        "secondary_engine_attribute": "",
        "row_format": 2,
        "partition_type": 0,
        "partition_expression": "",
        "partition_expression_utf8": "",
        "default_partitioning": 0,
        "subpartition_type": 0,
        "subpartition_expression": "",
        "subpartition_expression_utf8": "",
        "default_subpartitioning": 0,
        "indexes": [
            {
                "name": "PRIMARY",
                "hidden": true,
                "is_generated": false,
                "ordinal_position": 1,
                "comment": "",
                "options": "",
                "se_private_data": "id=344;root=4;space_id=126;table_id=1187;trx_id=38435;",
                "type": 2,
                "algorithm": 2,
                "is_algorithm_explicit": false,
                "is_visible": true,
                "engine": "InnoDB",
                "engine_attribute": "",
                "secondary_engine_attribute": "",
                "elements": [
                    {
                        "ordinal_position": 1,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 4
                    },
                    {
                        "ordinal_position": 2,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 5
                    },
                    {
                        "ordinal_position": 3,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 6
                    },
                    {
                        "ordinal_position": 4,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 0
                    },
                    {
                        "ordinal_position": 5,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 1
                    },
                    {
                        "ordinal_position": 6,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 2
                    },
                    {
                        "ordinal_position": 7,
                        "length": 4294967295,
                        "order": 2,
                        "hidden": true,
                        "column_opx": 3
                    }
                ],
                "tablespace_ref": "test/student"
            }
        ],
        "foreign_keys": [],
        "check_constraints": [],
        "partitions": [],
        "collation_id": 255
    }
}
}
,
{
        "type": 2,
        "id": 131,
        "object":
                {
    "mysqld_version_id": 80030,
    "dd_version": 80023,
    "sdi_version": 80019,
    "dd_object_type": "Tablespace",
    "dd_object": {
        "name": "test/student",
        "comment": "",
        "options": "autoextend_size=0;encryption=N;",
        "se_private_data": "flags=16417;id=126;server_version=80030;space_version=1;state=normal;",
        "engine": "InnoDB",
        "engine_attribute": "",
        "files": [
            {
                "ordinal_position": 1,
                "filename": ".\\test\\student.ibd",
                "se_private_data": "id=126;"
            }
        ]
    }
}
}
]

可以看到,它是 json 格式存储的,里面描述了这张表的字段、索引等各种信息。

4)逻辑存储结构

一个 ibd 文件就代表一个表空间

         在 InnoDB 的逻辑存储结构中,Page 是磁盘操作的最小单位,一个区就是 1 MB,一个 Page 16KB,一个区可以存放 64 页。

1.3.2、MyISAM

1)介绍

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

2)特点 
  • 不支持事务和外键;
  • 支持表锁,不支持行锁;
  • 访问速度快;
3)文件
  • xxx.sdi:存储表结构信息
  • xxx.MYD:存储数据
  • xxx.MYI:存储索引

1.3.3、Memory

1)介绍

Memory 引擎的表数据存储在内存,所以这些表只能做临时表

2)特点
  • 数据存储在内存,访问速度快
  • hash 索引(默认)
3)文件
  • xxx.sdi:存储表结构信息

1.3.4、总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【IDEA】什么maven,如何进行文件导入,并打包

maven介绍 maven是一个Java世界中,构建工具。 核心功能: 1,管理依赖: 管理文件运行的顺序逻辑依赖关系。对配置文件,进行构建和编译。其也是在调用jdk,来进行编译打包工作。 2,打包 通过使用…

【Python基础篇】你知道python的数据类型都有哪些吗?

文章目录 0. 前言1. 基本数据类型1.1 数值类型(int、float)1.1.1 整型(int)1.1.2 浮点型(float) 1.2 布尔类型(bool)1.3 字符串(str)1.4 字节串(b…

后端之路——文件本地上传

一、基础原理 文件上传是一个很基础的知识点&#xff0c;尤其是本地上传&#xff0c;在现实开发基本都是云上传&#xff0c;但是作为一个基础要简单了解一下 首先前端我就不多讲解了&#xff0c;网页开发里用<form>表单可以上传文件&#xff0c;只需要加上这三属性&…

Yolov8模型调参大全:超详细解读每一个参数

目录 1. 代码获取方式 2. YOLOv8网络配置 3. Yolov8使用 3.1. CLI 3.2. Python 4.default.yaml文件解读 1. 代码获取方式 Yolov8项目地址&#xff1a;https://github.com/ultralytics/ultralytics 这里就不详细介绍v8了 2. YOLOv8网络配置 # Ultralytics YOLO &…

超详细的 C++中的封装继承和多态的知识总结<1.封装与继承>

引言 小伙伴们都知道C面向对象难&#xff0c;可是大家都知道&#xff0c;这个才是C和C的真正区别的地方&#xff0c;也是C深受所有大厂喜爱的原因&#xff0c;它的原理更接近底层&#xff0c;它的逻辑更好&#xff0c;但是学习难度高&#xff0c;大家一定要坚持下来呀&#xff…

上海路演服务app开发的意义与主要功能

随着经济水平与互联网技术的飞速发展&#xff0c; 金融活动也逐渐深入人们的日常生活&#xff0c;各类公司也试图通过互联网获得金融机会&#xff0c;探寻新的发展。为了让企业具有更快捷&#xff0c;更便利的宣传途径与方法&#xff0c;上海路演服务app应运而生。 一&#xf…

SSM慢性病患者健康管理系统设计与实现-计算机毕业设计源码04877

目 录 摘要 1 绪论 1.1 研究意义 1.2研究目的 1.3论文结构与章节安排 2 慢性病患者健康管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分…

VS2019+QT VS tools:Debug下ok,relese下报错

报错界面 踩得坑&#xff1a; 尝试一下重装 QT VS tools&#xff0c;结果装不上。 尝试卸载原来的QT VS tools&#xff1a;卸载方法&#xff0c;到下面文件夹下可以看到有两个文件夹&#xff0c;分别是两个插件&#xff0c;找到QT的插件&#xff0c;删除文件夹即可。但是删除…

管理沟通能力测试,求职应聘和HR人才测评

什么是管理沟通能力&#xff1f; 管理沟通能力&#xff0c;包含两个方面&#xff0c;1方面是管理能力&#xff0c;另一方面是沟通能力&#xff0c;对于企业招聘来说基础管理管理、中高层管理必定会做管理和沟通能力测试。 这是从人的性格层面&#xff08;人格&#xff09;去评…

Java学习十二—Java8特性之Optional类

一、简介 Java 8 引入了 Optional​ 类作为一种容器&#xff0c;可以用来显式地表示一个值存在或不存在。它解决了传统上可能会遇到的空指针异常问题&#xff0c;同时提供了一种更优雅的方式来处理可能为null的情况。 Java 8 中引入 Optional​ 类的背景可以从以下几个方面来理…

css flex 子元素溢出时,父元素被撑开解决方案

当父元素使用flex: 1;自适应填满时&#xff0c;子元素内容溢出&#xff0c;父元素内容撑大&#xff0c;导致页面显示问题&#xff0c;或设置了overflow 为scroll 的元素没出现滚动条等问题 解决方案&#xff1a; 1.如果是横向排列&#xff0c;flex: 1;的元素加上width: 0; 此…

【Matlab 路径优化】基于蚁群算法的XX市旅游景点线路优化系统

基于蚁群算法的XX市旅游景点线路优化系统 &#xff08;一&#xff09;客户需求&#xff1a; ①考虑旅游景点的空间分布、游客偏好等因素&#xff0c;实现了旅游线路的智能规划 ②游客选择一景点出发经过所要游览的所有景点只一次&#xff0c;最后回到出发点的前提下&#xf…

实验4 宏指令及子程序设计实验

从键盘输入10个无符号十进制数&#xff08;小于256&#xff09;&#xff0c;将其转换为二进制数并存放在NUM字节型变量中&#xff0c;找出其中的最大数&#xff0c;并将找出的最大数在屏幕上显示出来。 要求&#xff1a; 1&#xff09;在屏幕上显示字符串提示信息的功能由宏指…

【PB案例学习笔记】-28制作一个右键菜单

写在前面 这是PB案例学习笔记系列文章的第28篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

多态相关知识2

多态相关知识2 抽象基类和纯虚函数纯虚函数和多继承虚析构函数虚析构函数作用纯虚析构函数 重写 重载 重定义 抽象基类和纯虚函数 在设计时&#xff0c;常常希望基类仅仅作为其派生类的一个接口。这就是说&#xff0c;仅想对基类进行向上类型转换&#xff0c;使用它的接口&…

Wing FTP Server

文章目录 1.Wing FTP Server简介1.1主要特点1.2使用教程 2.高级用法2.1Lua脚本,案例1 1.Wing FTP Server简介 Wing FTP Server&#xff0c;是一个专业的跨平台FTP服务器端&#xff0c;它拥有不错的速度、可靠性和一个友好的配置界面。它除了能提供FTP的基本服务功能以外&#…

据阿谱尔APO Research统计,2023年全球皮肤科药物市场价值为 751.7 亿美元

据阿谱尔 (APO Research&#xff09;统计&#xff0c;2023 年全球皮肤科药物市场价值估计为 751.7 亿美元&#xff0c;预计到 2030 年将达到 1622.1 亿美元&#xff0c;预测期内&#xff08;2024-2030 年&#xff09;的复合年增长率为 11.44%。 全球最大的单一类别皮肤科药物是…

TheBrain 14:AI增强的视觉知识管理工具

TheBrain是一款与众不同的思维导图软件&#xff0c;其所有信息通过一个又一个的节点进行联系&#xff0c;最终形成一个杂而不乱的网状结构。与传统的树形思维导图相较而言&#xff0c;TheBrain更有助于整合零散的资源&#xff0c;激发创意和锻炼思维。此次thebrain13带来了很多…

基因组学系列3:基因分型Phasing与单倍型参考序列HRC

1. 基因分型Phasing概念 基因分型&#xff0c;也称为基因定相、单倍体分型、单倍体构建等&#xff0c;即将一个二倍体&#xff08;或多倍体&#xff09;基因组上的等位基因&#xff08;或杂合位点&#xff09;正确定位到父亲或母亲的染色体上&#xff0c;最终使得来自同一亲本…

HMI 的 UI 风格成就经典

HMI 的 UI 风格成就经典