• 06 存储引擎


    1.Mysql结构简介

    我们通常使用客户端连接器连接Mysql服务;例如navicat图形化工具,Java中的jdbc等

    Mysql可以分为以下四层:

    1. 连接层:提供mysql的连接池、以及对请求进来的连接进行认证等服务;
    2. 服务层:用来对外提供服务,包含sql接口、sql解析器、sql优化器、缓存等服务;
    3. 引擎层:包含一些存储引擎
    4. 存储层:用来存放数据、系统文件、日志等

    2. 存储引擎简介

    存储引擎是存储数据、建立索引、进行查询和更新的实现基础;

    存储引擎是基于单个表,而不是基于库

    # 查看支持的存储引擎
    show engines;
    
    # innodb_file_per_table:决定使用innodb引擎的每张表一个文件;默认值为ON打开
    show variables like 'innodb_file_per_table';
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们经常使用的存储引擎有以下几种:InnoDB(5.7开始默认)、MyISAM(5.7之前默认)、MEMORY等

    简单介绍下以下几种

    事务外键锁形式
    InnoDB支持支持行级锁
    MyISAM不支持不支持表级锁
    MEMORY不支持不支持-

    3. 详解

    1. InnoDB

    文件存储形式:xxx.ibd,xxx指的是表名,innodb每张表对应一个ibd表空间文件,存储了表结构、数据、索引信息;查看系统变量innodb_file_per_table可以看到默认是ON,即每张表对应一个ibd文件

    Innodb逻辑存储结构

    以下依次为包含关系,例如表空间包含多个段,段包含多个分区

    1. TableSpace:表空间
    2. Segment:段
    3. Extent:分区,一个分区最大1M
    4. Page:页,一个分区最多64个Page一个Page页默认大小16kb;每个页最多存放7992行记录(16KB除以2~200)
    5. Row:数据行,里面有Trx id(当前事务id)、Roll pointer(指针)、col1、col2、……

    在这里插入图片描述

    2. MyISAM

    文件:

    1. xxx.sdi:存放的是表结构相关信息
    2. xxx.MYD:存放的是数据
    3. xxx.MYI:存放的是索引信息

    3. MEMORY

    特点:不支持事务,不支持外键,只能使用hash索引;数据都存放在内存中,常用来做缓存或者临时表

    文件:只有sdi文件存放表结构相关信息,因为数据都在内存中

    4. 存储引擎的选择

    1. 如果对数据一致性和准确性要求较高,需要使用事务,那么必须要用Innodb引擎
    2. 如果对于数据正确性要求不高,基本上只有select和insert,不需要使用事务,那么可以使用Myisam
    3. memory常用于缓存,临时数据等不重要的数据

    另外附上三种存储引擎的特点总结

    在这里插入图片描述

  • 相关阅读:
    博客系统自动化测试项目实战(测试系列9)
    开闭环系统性能分析(稳定性、收敛性、可控性)
    pandas第六章 -连接
    java 从 HDFS 读取数据到本地文件
    配置文件整合
    【Win】怎么下载m3u8视频\怎么通过F12开发人员工具获取视频地址\怎么下载完整的.ts格式视频
    提货卡礼品卡免登录提货程序开发
    go基础语法10问
    【面试】【项目】谷粒商城
    SQL-basics
  • 原文地址:https://blog.csdn.net/m0_46836425/article/details/127836220