[MySQL 面试题]-内部技术架构 55-56 MySQL 8.0 自带存储引擎及作用

55 MySQL 8.0 自带存储引擎及作用

存储引擎 主要作用与特点
InnoDB 默认引擎,支持事务,行级锁 、崩溃恢复、外键等、适合大多数OLTP场景
MyISAM 不支持事务、只支持表级锁,读写性能高、适合只读或轻写场景。
memory 数据存放在内存中,读写速度快,适合临时计算与会话缓存场景
csv 表数据以CSV格式存在文件中,可与外部系统共享数据(兼容性强)
archive 适合存历史归档数据,仅支持Insert和select,压缩存储,节省空间
blackhole 黑洞引擎,写入数据但不存储,常用于复制,中继或日志调试
federated 访问远程MySQL实例的数据,适用于跨库查询(需手动启用)
ndb(cluster) MySQL Cluster 引擎,支持分布式、高可用、高并发、需要单独安装

56 MySQL 存储引擎架构了解吗?

主要分为内存结构和磁盘结构两大部分。

dev.mysql.com/doc/refman/...

dev.mysql.com/doc/refman/...

InnoDB 架构总揽

innoDB 存储引擎采用模块化设计,主要分为两大部份:

  1. 内存结构(In-Memory Structures)
  2. 磁盘结构(On-Disk Structures)

这两部份协同工作,确保数据的高性能处理与持久性存储

In-Memory Structures

内存结构主要用于提升数据访问速度和处理效率。

  1. 缓冲池(Buffer Pool)

    • 缓冲池缓存了磁盘上的数据页(包括数据和索引),以减少磁盘I/O操作。
    • 通过配置参数 innodb_buffer_pool_size 控制其大小,合理设置有助于提升数据库性能。
  2. 自适应哈希索引(Adaptive Hash Index)

    • 检测到某些 B-Tree 索引频繁访问时,InnoDB会自动在内存中创建哈希索引,加速数据检索。
    • 此机制无需动手干预,完全由InnoDB自动管理。
  3. 变更缓冲区(Change Buffer)

    • 用于缓存对非非唯一二级索引页的插入、更新和删除操作,延迟磁盘写入,优化批量操作性能。
    • 适用于写密集型应用场景。
  4. 日志缓冲区(Log Buffer)

    • 暂存事务日志信息(Redo log),在事务提交前写入磁盘,确保事务的持久性。
    • 通过参数 innodb_log_buffer_size 配置其大小.

磁盘结构(On-Disk Structures)

磁盘结构负责数据的持久化存储。

  1. 表空间(Tablespaces)

    • InnoDB 支持多种表空间类型:系统表空间(System Tablespace)、每表表空间(File-Per-Table Tablespace)和通用表空间(General Tablespace)
    • 表空间用于存储表数据和索引、支持灵活的存储管理。
  2. 重做日志(Reao Logs)

    • 记录事务对数据的修改操作,用于在系统崩溃后进行数据恢复。
    • MySQL 8.0 引入了动态重做日志功能,允许在运行时调整重做日志的大小,无需重启数据库。
  3. 双写缓冲区(Doublewrite Buffer)

    • 在将数据页写入磁盘前,先写入双写缓冲区,确保在写入过程中即使发生故障也能保持数据一致性。
  4. Undo 表空间(Undo Tablespaces)

    • 存储事务的撤销信息,支持事务回滚和多版本并发控制(MVCC)。
    • Undo 信息也用于构建一致性读视图,确保读取操作的隔离性。

事务与多版本并发控制(MVCC)

InnoDB 实现了完整的 ACID 事务特性,支持:

  • 原子性(Atomicity) :确保事务中的所有操作要么全部完成,要么全部不做。
  • 一致性(Consistency) :事务使数据库从一个一致性状态转变到另一个一致性状态。
  • 隔离性(Isolation) :通过 MVCC 和锁机制,支持不同级别的事务隔离。
  • 持久性(Durability) :事务提交后,其结果永久保存在数据库中,即使系统崩溃也不会丢失。

MVCC 通过维护数据的多个版本,使得读取操作无需加锁,提高了并发性能。

相关推荐
触底反弹8 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
Database_Cool_8 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
Database_Cool_9 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
醇氧9 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
姜太小白10 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
liuxiaowei311 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
黄敬峰12 小时前
从零搞懂 useState 与 Fragment:React 函数式组件的基石
面试
sg_knight14 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
Database_Cool_15 小时前
企业级多模态分析计算引擎选型:首选 AnalyticDB MySQL 向量 + SQL + 实时一体化方案
数据库·sql·mysql
Android研究员17 小时前
Android进阶之事件分发机制深度剖析
android·前端·面试