• MySQL的进阶篇1-MySQL的存储引擎简介


    存储引擎

    MySQL的体系结构

    0、客户端连机器【java、Python、JDBC等】

    1、【MySQL服务器-连接层】认证,授权,连接池

    2、【MySQL服务器-服务层】 {SQL接口(DML、DDL、存储过程、触发器)、解析器、查询优化器、缓存}

    3、【MySQL服务器-存储引擎层】{InnoDB、MyISAM、NDB、Archive。。。。可插拔式}

    ​ 控制的是MySQL当中数据存储和提取的方式,服务器会通过存储引擎和API进行通信和交互。

    ​ 【索引是在存储引擎层实现的,也就意味着不同的存储引擎,索引的结构是不一样的】

    ​ InnoDB是MySQL5.5版本之后默认的存储引擎。

    4、【MySQL服务器-存储层】持久化到磁盘当中的文件和日志。

    存储引擎简介

    ​ 引擎没有好坏之分,不同的场景使用不同的引擎。

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

    ​ show create table user;

    CREATE TABLE `user` (
      `user_id` int(11) NOT NULL,
      `username` varchar(60) DEFAULT NULL,
      `user_status` char(1) DEFAULT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    show engines;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    ENGINE=InnoDB DEFAULT CHARSET=utf8 指定存储引擎。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    存储引擎特点

    1、InnoDB

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

    特点:

    ​ 1、DML操作遵循ACID模型,支持事务

    ​ 2、行级锁,提高并发访问性能。

    ​ 3、支持外键 Foreign key约束,保证数据完整性和准确性。

    磁盘文件:

    ​ 每一个InnoDB表都会对应磁盘文件。

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

    ​ 参数:innodb_file_per_table

    show variables like 'innodb_file_per_table';
    
    • 1

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    ibd2sdi emp.ibd 就会返回数据文件的json记录。

    逻辑存储结构:

    1、tablespace:表空间

    2、segment:段

    3、Extent:区,大小固定,为1M,可以包含64个页。

    4、Page:页,大小固定,为16K

    5、Row:行【再里边就包含事务id、指针、和列记录了 】

    2、MyISAM

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

    特点:

    不支持事务、不支持行级锁、不支持外键

    支持表锁,访问速度快

    磁盘文件:

    tb_book.MYD :数据

    tb_book.MYI:索引

    tb_book_448(序号自增).sdi:表结构

    3、Memory

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

    特点:

    ​ 由于放到内存中,访问速度快。

    ​ 支持hash索引(默认)

    文件:

    xxx.sdi:存储表结构信息,因为它的数据都是存储到内存中,所以不持久化到磁盘。

    4、存储引擎特点-总结:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    存储引擎选择

    InnoDB:对数据一致性要求较高;

    MyISAM:读操作和插入操作为主。【日志和评论】

    Memory:做缓存。但是内存大小有限制。

  • 相关阅读:
    MongoDB索引覆盖查询
    Mysql数据库基础总结:
    Oracle(1):Oracle简介
    《网络安全笔记》第十章:数据的封装和解封装
    MySQL的备份与恢复
    postgresql源码学习(34)—— 事务日志⑩ - 全页写机制
    M1 pro 芯片Macbook Pro配置anaconda&& GPU版Pytorch
    第十四届蓝桥杯校内模拟赛(第一期)题解分享
    企业即时通讯软件,如何让沟通协作更加安全高效?
    深入了解Python类与面向对象编程
  • 原文地址:https://blog.csdn.net/pshdhx/article/details/133036169