MySQL1️⃣体系结构 & 存储引擎

1、MySQL 体系结构

  1. 系统管理和控制工具:备份与恢复、安全、复制、集群等。

  2. 连接层:引入线程池的概念。

    • 认证,线程管理,连接管理等。
    • 可实现基于 SSL 的安全连接,服务器也会为安全接入的每个客户端验证它所具有的操作权限。
  3. 服务层:完成大多数的核心服务功能。

    • SQL 接口:处理 SQL 命令,存储过程,试图,触发器等
    • 解析器
    • 查询优化器:是否使用索引等
    • 缓存
  4. 引擎层:内存、索引、存储管理

    • 真正负责 MySQL 中数据的存储和提取,服务器通过 API 和存储引擎进行通信。
    • 不同的存储引擎具有不同的功能,根据需要选取合适的存储引擎。
    • 实现索引
  5. 存储层

    image-20220313162348744

2、存储引擎(❗)

存储引擎:存储数据、建立索引、更新/查询数据等技术的实现方式。

  • 基于表,而不是基于库(因此存储引擎也称为表类型)。
  • 建表的时候可以指定存储引擎,否则自动使用默认引擎。

2.1、三大存储引擎

2.1.1、InnoDB(❗)

InnoDB 引擎:兼顾高可靠性和高性能的通用存储引擎。

(MySQL 5.5+ 默认)

  1. 特点

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

    • InnoDB 引擎的每张表,都对应一个 ibd 表空间文件。
    • 存储表结构信息、数据和索引。
  3. 逻辑存储结构

    image-20220313170930188

2.1.2、MyISAM

MyISAM:MySQL 早期的默认存储引擎。

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

2.1.3、Memory

Memory:受硬件、断电等影响,只能作临时表或缓存使用。

  • 特点:数据存放在内存中、支持 hash 索引。
  • 文件:sdi 文件,存储表结构信息。

2.1.4、区别(❗)

主要从 事务、外键、锁 的角度,

也可以从索引结构、存储限制等方面深入回答。

InnoDB MyISAM Memory
存储限制 64TB
事务 - -
外键 - -
锁机制 行级锁 表锁 表锁
B+ 树索引
Hash 索引 - -
全文索引 ✔(5.6 后) -
空间使用 N/A
内存使用 中等
批量插入速度
存储表的行数
COUNT(*) 全表扫描 保存表的行数 -

InnoDB 是聚簇索引,叶节点存储数据(key 或完整信息),可能导致回表查询。

MyISAM 是非聚簇索引,叶节点存储数据的指针。

2.2、如何选用

原则只有合不合适,没有好坏之分

  • 根据应用系统的特点,选择合适的存储引擎。

  • 对于复杂的应用系统,可以选择多种存储引擎组合。

  • InnoDB
    • 事务、并发性要求高
    • 除了读操作和插入操作,还有很多更新、删除操作。
  • MyISAM(很少使用,用 MongoDB 替代)
    • 对事务、并发性要求不高。
    • 以读操作和插入操作为主,很少更新、删除操作。
  • Memory(很少使用,用 Redis 替代)
    • 通常用于临时表和缓存,访问速度快
    • 缺点是对表的大小有限制,无法保障数据的安全性。
posted @ 2022-10-13 11:08  Jaywee  阅读(42)  评论(0编辑  收藏  举报

👇